7902127

FORDt DAVID JAKES ON i THE COMPUTATION OF THE MAXIMAL IK A .

THE OHIO STATE UNIVERSITY, PH.D*, 1978

University. Microfilms International 3q o n . z e e b r o a o . a n n a r b o r , mi 48ios ON THE COMPUTATION OF THE MAXIMAL ORDER

IN A DEDEKIND DOMAIN

DISSERTATION

Presented in Partial Fulfillment of the Requirements for

the Degree Doctor of Philosophy in the Graduate

School of The Ohio State University

By

David James Ford, B.S., M.S.

# * * K *

The Ohio State University

1978

Reading Committee: Approved By

Paul Ponomarev

Jerome Rothstein

Hans Zassenhaus Hans Zassenhaus Department of Mathematics ACKNOWLDEGMENTS

I must first acknowledge the help of my Adviser, Professor Hans Zassenhaus, who was a fountain of inspiration whenever I was dry.

I must also acknowlegde the help, financial and otherwise, that my parents gave me. Without it I could not have finished this work. All of the computing in this project, amounting to between one and two thousand hours of computer time, was done on a PDP-11 belonging to Drake and Ford Engineers, through the generosity of my father. VITA

October 28, 1946...... Born - Columbus, Ohio

1967...... B.S. in Mathematics Massachusetts Institute of Technology Cambridge, Massachusetts

1967-196 8 ...... Teaching Assistant Department of Mathematics The Ohio State University Columbus, Ohio

1968-197 1...... Programmer Children's Hospital Medical Center Boston, Massachusetts

1971-1975...... Teaching Associate Department of Mathematics The Ohio State University Columbus, Ohio

1975-1978...... Programmer Prindle and Patrick, Architects Columbus, Ohio

PUBLICATIONS

"Relations in Q (Zh X ZQ) and Q (ZD X ZD)" (with Michael Singer) n 4 o n o o Communications in Algebra, Vol. 5, No. 1 (1977), pp. 83-87.

FIELDS OF STUDY

Major : Mathematics

Studies in Algebra and . Professor Hans Zassenhaus

iii TABLE OF CONTENTS

Page

ACKNOWLEDGMENTS...... ii

VITA...... iii

LIST OF TABLES...... vi

LIST OF FIGURES...... vii

INTRODUCTION...... ,...... 1

Chapter

I. THE ALGEB LANGUAGE...... 4

0. Introduction...... 4 1. Preliminary Definitions...... 4 2. Block Structure...... 6 3. Comments...... 6 4. Variable Declarations...... 7 5. Procedure Declarations...... 7 6. Procedure Calls...... 11 7. System Procedures...... 11 8. Input and Output Channels...... 14 9. Integer Expressions...... 14 10. Boolean Expressions...... 15 11. Array Reference Calls...... 16 12. Array Expressions...... 16 13. Destinations...... 17 14. Statements...... 18 15. Simple Statements...... 18 16. GOTO Statements...... 18 17. Assignment Statements...... 19 18. Exchange Statements ...... 19 19. Division Statements...... 19 20. Compound Statements...... 19 21. IF-Statements...... 20 22. WHILE-Statements...... 20 23. FOR-Statements...... 20 24. Labeled Statements...... 21

iv Page

II. THE ROUND TWO ALGORITHM...... 22

1. Background...... 22 2. The Complete Algorithm...... 23 3. External Subroutines...... 33

III. THE ROUND FOUR ALGORITHM...... 36

1. Preliminary Remarks...... 36 2. Definitions...... 37 3. Criteria for p-Maximality...... 40 4. Algebraic Decomposition...... 42 5. The p-primary case...... 45

IV. AN ALGEB IMPLEMENTATION OF THE ROUND FOUR ALGORITHM...... 51

1. The MAXORD Routine...... 51 2. Algebraic Decomposition — The DECOMP Routine...... 52 3. The p-primary Case — The NILORD Routine...... 57 4. Polynomial Factorization modulo p — The Berlekamp Algorithm...... 66 5. MINPOL — The Minimal Polynomial Routine...... 71 6. REDUCE — Hermitian Row-Reduction...... 72 7. Polynomial Manipulation Routines...... 73 8. Routines for Manipulating Elements in a Polynomial Algebra...... 75 , 9. Miscellaneous Untyped Procedures...... 76 10. Integer Procedures...... 77

V. TEST DATA AND RESULTS...... 79

1. 650 Polynomials...... 79 2. Experimental Results...... 80 3. Conclusions...... 81

BIBLIOGRAPHY...... 91

APPENDICES

A. Grammar for ALGEB (Second Pass)...... 93

B. 650 Irreducible Polynomials and Their Discriminants...... 95

v LIST OF TABLES

Table

1. Execution Times LIST OF FIGURES

Figure

1. Ratio of Execution Times vs. Degree INTRODUCTION

If R is an integral domain and A is an overring of R, then we call an element of A integral with respect to R if it satisfies a monic poly­ nomial of R[t].

In case A is commutative, the set of all integral elements of A is an R- of A, called the integral closure of R in A. The integral closure of the rational integer Z in the complex number field C is called the ring of algebraic integers. If E is a subfield of C and at the same time a finite-dimensional extension of the field Q, then the integral closure of Z in E, which .is the same as the intersection of E with the ring of algebraic integers, is called the maximal order of E. It is shown in (see [2], Chapter 2) that the maximal order of E has a Z-basis w^, w,,, which is also a basis of E over Q (a so-called minimal basis).

An arbitrary unital subring of E containing a basis of E over Q which is finitely generated over Z is said to be a Z-order of E. The maximal order M of E is maximal with respect to inclusion among the Z-orders of E.

More generally speaking, a unital overring V of a noetherian domain R is said to be an R-order if 1„ = 1D and if V as an R-module is torsion-free V h and finitely generated and if V as a ring contains no nonzero . It is always true for any absolutely semisimple commutative hypercomplex system A over the quotient field F of R that the integral closure M of R in A is an R-order that is maximal among the R-orders of A. An R-basis of M is also an F-basis of A, also called an R-minimal basis of A over F.

If A is non-commutative then there are also maximal R-orders of A but they are not necessarily uniquely determined.

An example of a commutative order over a noetherian domain R is provided by the equation order

Vf/R = R[t]/f(t)R[t] = R[u] corresponding to a monicseparable polynomial f of R[t]. Here we set

u = t/f(t)R[t] so that the monic algebraic equation

f(u) = 0 provides the defining relator for u over R.

1 2

The determination of an R-basis for M is a task that arises in many al­ gebraic settings. In the case R = Z, F = Q, and A an algebraic num­ ber field, there exists a minimal basis. Its computation provides the main task of this thesis. Knowledge of a minimal basis for an algebraic number field is of fundamental importance: it is only in the maximal order that ideals factorize uniquely as products of prime ideals.

The central difficulty presents itself even in fields of degree 2. If u 2 is a root of f(x) = x - 13, A = Q[u] = Q1 + Qu, then {1,u} is a Q-basis for A. But Z[u] is not the maximal order; the element b = (u+1)/2 is 2 integral, being a root of x - x - 3. In fact {1,b} is a minimal basis for this field.

In 1.927, Berwick [1] presented an algorithm to determine a minimal ba­ sis for an algebraic number field. While otherwise quite effective, this algorithm had the drawback that in certain rare cases it would fail. It was not unitl 1965, with Zassenhaus*s "First Round" algorithm [12], that we had a practical constructive method to produce a minimal basis for a number field that works in every case. The Zassenhaus al­ gorithm has the further advantage that it applies generally to any hypercomplex system with a finite basis over Q: given an order in such a hypercomplex system, the Round One algorithm produces a Z-basis for a maximal order containing the original order.

The first round algorithm was improved, giving the "Second Round" algo­ rithm [14], then substantially revised for the non-coramutative case to give the "Third Round" algorithm [16]. Kehlenbach [6] programmed and tested the Round Two algorithm for the number field case.

In the present work we give a new algorithm, the "Round Four" algorithm, that applies in the case of a separable polynomial algebra over Q. It is in the spirit of the Berwick method, in that it achieves its ends by manipulation of polynomials and single elements of the algebra, avoiding for the most part the time-consuming matrix operations that characterize the Round Two algorithm. The results of a large number of comparison tests indicate that the ratio of execution times between the Round Two 1 21 and Round Four algorithms is approximately of the order of n , where n is the degree of the algebra.

Faced with the necessity of writing several very complex computer pro­ programs involving matrix operations and arithmetic with large rational integers, we decided to create a new programming language for research in abstract algebra. The language is intended for work in finite­ dimensional algebras over Q, and contains implicitly matrix and vector arithmetic, with the capacity to handle rational integers several tens of thousands of digits in length. 3

In Chapter I we describe the language in sufficient detail that the reader may follow the programs and examples that appear later.

Chapter II contains a brief description of the round two algorithm, along with our implementation of the algorithm in the new language and a full description of that implementation.

In Chapter III we present the mathematical theory underlying the Round Four algorithm, together with a sketch of the algorithm.

The Round Four algorithm appears in Chapter IV as a program in the new language, together with descriptive comments.

Finally, in Chapter V, we give our experimental results and explain how we obtained the test data.

Included as appendices are:

A. The grammar of the new language, and B. A list of our test polynomials. CHAPTER I

THE ALGEB LANGUAGE

CLu Introduction

We began the present project with the intention of doing all our pro­ gramming in the PDP-11 assembly language. In a short time, however, we were persuaded that our labor would be more efficiently spent if we were first to create a high-level language, and then to write the rest of our programs in that language.

The result we call ALGEB, to emphasize its relation to ALGOL and its intended application to research in algebra. It is similar to ALGOL in having block structure and recursive procedures. The grammar is much simpler, however, being (after the removal of variable declarations) an "operator precedence grammar", as defined by R. W. Floyd [4]. The gram­ mar for ALGEB appears in Appendix A.

ALGEB allows integer variables to assume very large values; in our PDP-11 implementation a single integer variable could exceed 80,000 digits in length. The integer variables in a program compete for memory space— at a given time an integer variable may take on a value limited in size only by the number of unused memory words available. With such large integer values accessible, we found it unnecessary to include any "real11 or "floating point" variable type.

The language includes the operations of matrix addition, subtraction and multiplication, and multiplication of a matrix by a scalar, so that all the operations in a finite-dimensional matrix algebra over the rationals are implicit in the language. Also, a vector may be multiplied on the left or right by a matrix to yield another vector, or may be combined with another vector to produce an integer result, the standard "scalar product" of the two vectors.

We completed a compiler for the language that runs on a PDP-11 computer with 28K 16-bit words of memory and several disk cartridge drives, using the RT-11 operating system. The compiler itself occupies about 10K words, but requires additional memory space to construct tables. It has run successfully on a machine with only 16K words.

1. Preliminary Definitions

The following are the legal characters in ALGEB:

AB C DE FGH I j K L M N 0 P Q R S T U V w X Y Z 0 1 2 3 4 5 6 7 8 9 i it # & * ( ) * + J - / : 5 < = > [ ] “

4 5

In addition, the ASCII characters for horizontal tab, line feed, verti­ cal tab, form feed, carriage return, and horizontal space are allowed. These characters are called "separators"; they are all equivalent in the language. That is to say, the spacing and lineation of a program are of no significance in ALGEB; one may arrange his program statements in any way that seems useful or pleasing, as long as sequence is preserved.

Certain combinations of characters have a special significance and are regarded as single units of the language. These are:

signifying "receives", "exchange", "less than or equal to", "greater than or equal to" and "ellipsis", respectively. Also in the same cate­ gory are the reserved words:

AND END MOD ARRAY EXTERNAL NOT BEGIN FOR OR BOOLEAN GLOBAL PROCEDURE COMMENT GOTO REM DIVIDES IF THEN DO INTEGER VALUE ELSE IOCHAN WHILE

Any ASCII character whatsoever may appear inside a string or a comment (see below) but only those listed above may appear outside a string or a comment.

A name is an unbroken sequence of not more than 127 letters or digits, the first of which must be a letter, not identical to one of the re­ served words.

A name identifies a variable. a procedure. or a label. The names TRUE and FALSE are Boolean constants and should not be used for any other purpose.

An integer constant is an unbroken sequence of not more than 127 digits. (That is to say, an integer constant appearing in a program may not ex- 127 ceed 10 - 1, although integer variables may assume far, far larger values as a program runs. The size of integer constants is limited by the size of a buffer in the compiler.)

A string is an arbitrary sequence of no more than 127 ASCII characters enclosed in single or double quotes; the quotes themselves are not part of the string. A string enclosed in single quotes may contain double quotes, and vice-versa, but a single string may not contain both single and double quotes. With that exception, a string may contain any ASCII characters whatsoever. We regard strings, together with the reserved names TRUE and FALSE, as Boolean constants. 6

A variable may be of one of three types: INTEGER, BOOLEAN, or ARRAY.

An INTEGER variable takes values from the ring of rational integers. The size of these variables is limited by the amount of memory avail­ able.

A BOOLEAN variable may take the values TRUE or FALSE, or may take a string as its value.

An ARRAY variable (called a "subscripted variable" in some other lan­ guages) is a set of INTEGER variables, each of which is uniquely identi­ fied by a finite sequence of subscript values. The dimension of an ar­ ray is the number of subscripts necessary to specify an element of the array. An ARRAY variable may have arbitrarily large dimension, limited only by the amount of memory available. A one-dimensional array is called a VECTOR; a two-dimensional array is called a MATRIX.

2. Block Structure

The reserved words BEGIN and PROCEDURE (except when the procedure is declared to be EXTERNAL) indicate the beginning of a block, and the word END indicates the end of a block. (Note that the word PROCEDURE does not have this effect in ALGOL.) A block beginning with the word BEGIN is called a statement block: a block beginning with the word PROCEDURE is called a procedure block. A block consists of a sequence of declara­ tions and statements separated by semicolons. The declarations (if any) must precede the statements, and at least one statement must be present. It follows that a declaration must terminate at a semicolon. However, the last statement in a block need not be followed by a semicolon, so one should regard the semicolon as a separator rather than as a termina­ tor. (The "!" and characters also serve as separators in the forma­ tion of a compound statement.) A statement block itself constitutes a statement, and a procedure block is itself a declaration. Blocks may thus be nested to any practical depth.

As in ALGOL, a label, variable name or procedure name declared inside a block has no meaning outside the block. Furthermore, a name declared inside a block may duplicate a name that appears outside the block; any reference to the name inside the block refers to the declaration inside the block; the name that appears outside the block is not accessible from within the block.

3_t. Comments

The reserved word COMMENT indicates a comment. A comment may contain any ASCII characters at all except a semicolon; a semicolon indicates the end of the comment. The compiler ignores all characters after COMMENT until the semicolon. The compiler treats the entire comment as if it were a single semicolon. Thus a comment may appear anywhere that 7 a semicolon might appear (e.g., not in the midst of a compound state­ ment— see below).

JL. Variable Declarations

Every variable must have its type declared in a variable declaration. Any number of variables of the same type may be declared in a single declaration. INTEGER and BOOLEAN declarations consist of the type word followed by a list of variable names separated by commas. Examples:

INTEGER X, T, A739JY10, REMAINDER BOOLEAN MO, B, TRUTHVALUE

Array declarations must additionally include, for each variable, a list of pairs of integer expressions, giving the low and high bounds of each subscript. The bounds in each pair must be separated by a colon, the bound pairs must be separated by commas, and the list of bound pairs must be enclosed in square brackets. If several arrays in sequence in the same declaration have the same dimension and identical bounds, then only the last need have its bounds specified. For example,

ARRAY A,B,C[1:10,K-1:P(2,3*T)], F,G[0:N], MTBL[1:N,1:N,1:N] would declare A, B and C to be matrices with identical bounds, F and G to be vectors of the same length, and MTBL to be a three-dimensional array. The bounds must be integer expressions that are valid immedi­ ately outside the current block; this is because the bound expressions are evaluated upon block entrance, and must therefore be independent of the values of any variables declared inside the block. In the example above, the variables K, N and T and the integer procedure P must be de­ clared outside the block in which this declaration appears. As a fur­ ther consequence, an array declaration may only appear inside a block.

5. Procedure Declarations

A procedure may be of type INTEGER, BOOLEAN or ARRAY, or may be untyped. (In some languages a typed procedure is called a "function" and an un­ typed procedure a "subroutine".) A typed procedure call constitutes an expression of the same type, and an untyped procedure call is a (simple) statement. A procedure may further be declared to be EXTERNAL or GLOBAL. To declare a procedure EXTERNAL is to indicate that the body of the procedure is to be found elsewhere (e.g., in another file) and is there declared to be GLOBAL. A GLOBAL procedure may be compiled by itself and then linked to any program in which the same procedure is declared to be EXTERNAL.

(Note: The RT-11 operating system only recognizes the first six charac­ ters of GLOBAL and EXTERNAL procedure names; therefore, any two such 8

names must differ, in the first six characters, or they will be treated as identical.)

A procedure may have any number of parameters. If a procedure has para­ meters, then their names must appear in the procedure declaration imme­ diately after the procedure name, separated by commas, the whole list being enclosed in parentheses. In the declaration of an array procedure with parameters the list of subscript bound pairs must immediately fol­ low the list of parameters; in an array procedure without parameters the list of bound pairs must immediately follow the procedure name. The parameters of a procedure must themselves be declared as variables in­ side the procedure. The bounds of an array parameter are determined by the bounds of the corresponding argument when the procedure is called, so that the bounds of an array parameter can not be specified in the procedure declaration. Hence, the bound pair list of an array parameter consists of a single integer constant, giving the dimension of the array parameter. This integer must be enclosed in square brackets. The same considerations apply to a global array procedure, so the bound pair list of a global array procedure must also be a single integer constant, en­ closed in square brackets.

A parameter may be called by name or by value. A parameter is called by name unless it is declared to be called by value. A value declaration has the same format as a variable declaration, with the reserved word VALUE appearing in place of a type word. Or, if it seems convenient, the word VALUE may be included in the parameter type declaration, imme­ diately before or after the type word. For example,

1) VALUE X, Y; INTEGER X,Y; 2) VALUE INTEGER X,Y; 3) INTEGER VALUE X,Y; all have the same effect.

A parameter called by value is a local variable within the procedure that takes on the value of the corresponding argument in the procedure call. When a procedure modifies a value parameter, the value of the argument in the procedure call is not changed. A parameter called by name, on the other hand, is a pointer to the argument in the procedure call, so that, when a procedure modifies a name parameter, the value of the original argument itself is changed. Example:

PROCEDURE ADDO(X); VALUE X; INTEGER X; X := X + 1 END;

PROCEDURE ADD1(Y); INTEGER Y; Y := Y + 1 END; 9

When called with "ADDO(N)", the procedure ADDO copies the value of N into a local variable X, and then adds 1 to X, leaving N unchanged. When called with "ADD1(N)", the procedure ADD1 adds 1 to N itself; in this case the parameter Y is a "pointer" to the variable N. It follows that, when an argument is an array or a large integer, a call by name uses less memory space than a call by value.

The call-by-name feature in ALGEB differs from that in ALGOL, being simpler and less powerful, as the following example shows:

INTEGER K; ARRAY AC 1:10];

PROCEDURE KSUM(X); INTEGER X; K := 1; X := K; K := 2; X := K; CO • *% II X := K END;

• • •

K := 5; KSUM(A[K]);

In ALGEB, the call "KSUM(A[K])" with K = 5 sets the name parameter X to point to A[5], so that the procedure KSUM sets AC5] equal to 1, 2 and 3 successively; KSUM does not modify the address to which X points. In ALGOL (in which the expression defining an argument called by name is re-evaluated every time the corresponding parameter appears in the pro­ cedure) the call "KSUM(A[K])" would give A[1] the value 1, A[2] the value 2, and A[3] the value 3. More generally, Jensen's device is not valid in ALGEB.

Procedures are always fully recursive. A procedure may call itself or any other procedure, without restriction.

Examples:

1) This procedure computes the greatest common divisor of two integers recursively:

INTEGER PROCEDURE GCD(X,Y); VALUE X,Y; INTEGER X,Y,Z; IF Y = 0 THEN GCD := ABS(X) ELSE REM Z := X/Y ! GCD := GCD(Y,Z) END

2) Assuming that the arrays F and G contain the coefficients of the polynomials f and g, and that their product has degree 10

no greater than N, this procedure produces an array that contains the coefficients of the product of f and g:

ARRAY PROCEDURE PPR0D(F,G)[0:N]; ARRAY F,G[1]; INTEGER I,J,S; FOR I := 0 ....N DO BEGIN S := 0; FOR J : = 0,..., I DO S := S + F[J]*G[I-J]; PPRODCl] := S END END

3) It must be borne in mind that a parameter called by name is a pointer to a particular memory location; the value of the variable at that location may change, and it may do so in subtle ways, as the following example shows.

PROCEDURE P(N); INTEGER N,K; IF N > 0 THEN WRITEN(0,N,2) ! K := N - 1 ! WRITEN(0,N,2) ! LINE(0 ,1) ! P(K) END;

PROCEDURE Q(V); INTEGER V,L; VALUE V; IF V > 0 THEN WRITEN(0,V ,2) ! L := V - 1 ! WRITEN(0,V,2) ! LINE(0,1) ! Q(L) END;

The call "PO)" would produce the output

3 3 2 1 1 0

v/hereas the call "Q(3)" would produce

3 3 2 2 1 1 11

The procedures P and Q are identical in function, except that the parameter N is called by name, and the parameter V is called by value. Upon the first entry into P, the para­ meter N points to the constant 3, so both "WRITEN" calls produce the number 3. But the next two times through, N is pointing to the variable K, so that the statement

K := N - 1

is equivalent to

K := K - 1

and the value of K, and therefore of N, is different for the two "WRITEN" calls. At the first entry into Q, the value 3 is copied into V; at the second and third entries the value of L is copied into V. In each case, the statement

L := V - 1

does not affect the value of V, so that both "WRITEN" calls produce the same value.

6. Procedure Calls

The appearance of the name of a procedure (except when the name of a typed procedure appears as a destination— see below) constitutes a pro­ cedure call. If the procedure has parameters, then the procedure name must be followed by a list of expressions of the same types as the cor­ responding parameters. We call these expressions the "arguments" of the procedure call; the arguments must be separated by commas, and the argu­ ment list must be enclosed in parentheses. A typed procedure call con­ stitutes an expression of the same type; an untyped procedure consti­ tutes a simple statement (see below). Example:

GCD(X,Y~2+1)

7. System Procedures

The system library contains several procedures to perform functions that would otherwise be inefficient or impossible to express in ALGEB. These include textual and numeric input and output, file management, and other system access routines. The compiler recognizes the names of these rou­ tines without any declarations being necessary. The programmer is free to define labels, variables and procedures with the same names as these system routines, with the understanding that, when they are in force, his declarations supersede those of the system. (It is precisely as if the system procedures were defined in a "super-block" that contained the user’s program; "local" declarations would prevail in the blocks where they were declared.) In what follows, C, I, H and X represent integer expressions, Y repre­ sents an integer destination, A represents an array expression, and S represents a Boolean expression that has a string value.

INPUT(C,S) is untyped. This procedure opens the file S on channel C for input.

OUTPUT(C,S) is untyped. OUTPUT opens the file S on channel C for output.

CLOSE(C) is untyped. CLOSE terminates input or output on channel C and frees the channel so that it may be used in an INPUT or OUTPUT call. Only one file may be associated with a given channel at one time; two INPUT or OUTPUT calls that refer to the same channel will produce an error mes­ sage unless a CLOSE call appeared in between.

READC(C,Y) is untyped. READC reads the next character from channel C and puts its ASCII value in Y. (Chan­ nel C must have been opened previously by an INPUT call.) Notice that Y receives the integer code value of the character. (This value may not be compared to a string.)

READN(C,Y) is untyped. READN reads the next number from channel C and puts its value in Y.

EOF has type Boolean. EOF has the value TRUE if the most recent READC or READN call encountered the end of the input file (in which case no integer value was transferred); otherwise EOF has the value FALSE.

WRITEC(C,X) is untyped. WRITEC writes the ASCII character with code given by X on channel C. (Channel C must have been opened previously with an OUTPUT call.)

WRITEN(C,X,H) is untyped. WRITEN writes the value of X on channel C in a field having length H. That is to say, if the number of characters required to represent the value of X (including a mine's sign if X is negative) is less than H, WRITEN produ­ ces spaces preceeding the value to give the entire string the length H. (This could only happen if H > 1.) If the number of characters equals or exceeds H, then the value of X is written with no leading spaces. In any case, the entire value of X is written; WRITEN never truncates a value. 13

WRITES(C,S) is untyped. WRITES writes the string S on chan­ nel C.

LINE(C,X) is untyped. LINE writes X carriage-return, line-feed combinations (two characters) on channel C.

SPACE(C,X) is untyped. SPACE writes X ASCII space charac­ ters on channel C.

TIME has type integer, and gives the time showing on the system clock. (Under the RT-11 system, the clock gives the time in 60ths of a second.)

ABS(X) has type integer, and returns the absolute value of X.

SIGN(X) has type integer, and returns the sign of X; that is, -1 if X < 0, 0 if X = 0, and +1 if X > 0.

LOWBD(I,A) has type integer. LOWBD gives the low bound of subscript I of the array expression A.

HIGHBD(I,A) has type integer, and gives the high bound of subscript I of the array A.

NOECHO is untyped. NOECHO suspends the printed echo of characters typed on the terminal.

ECHO is untyped, and restores the automatic printed echo of characters typed on the terminal.

LCASE is untyped, and inhibits the automatic transla­ tion from lower-case to upper-case of alphabetic characters typed on the terminal.

UCASE is untyped, and restores the automatic transla­ tion from lower-case to upper-case of alphabetic characters typed on the terminal.

Examples:

1) Here is a complete program to make a copy of the file "FDATA" under the name "FCOPY".

IOCHAN 1,2; INTEGER K; INPUT(1,"FDATA"); 0UTPUT(2,"FCOPY"); LOOP: READC(1,K); IF NOT EOF THEN WRITEC(2,K) ! GOTO LOOP; CL0SEO); CLOSE (2) 14

2) This program produces a "beep" on the terminal every ten seconds, assuming that the clock gives the time in 60ths of a second. (7 is the ASCII code for the "bell" character.)

INTEGER T0,T; T := TIME; LOOP: WRITEC(0,7); TO := T; WHILE T-TO < 600 DO T := TIME; GOTO LOOP

8. Input and Output Channels

One may have at most sixteen input or output channels in a program; each channel is identified by an integer constant between 0 and 15. Channel 0 always refers to the system keyboard terminal (and therefore requires no memory space). Channels 1 through 15 may be associated with any de­ vice in the system. (In the RT-11 implementation, channels 1 through 15 each require 263 words of memory.)

A channel declaration consists of the word IOCHAN followed by a sequence of channel numbers (each of which must be an integer constant), separa­ ted by commas. A channel declaration serves to ensure that space has been reserved for the channels listed. Redundant channel declarations do no harm; only if a given channel has not already been declared is space appropriated for it. If a channel declaration appears inside a block, then the space reserved for those channels is released upon an exit from the block, except for those channels that were already de­ clared outside the block.

Channel 0 is always open for both input and output. It does not need to be declared or initialized with the INPUT or OUTPUT procedures.

An example appears under SYSTEM PROCEDURES.

4. Integer Expressions

By "integer expression" we mean

1) an integer constant, or 2) the name of an integer variable, or 3) a subscripted array expression, or 4) an integer procedure call, or 5) the product of two one-dimensional arrays (i.e., the "scalar product" or "dot product" of two vectors), or 6) any combination of integer expressions by means of parentheses and the arithmetic operators +, -, * and (exponentiation).

As in regular usage, exponentiation has precedence over multiplication, multiplication has precedence over addition and subtraction, and all 15

operations inside a pair of parentheses are performed before any oper­ ations outside the parentheses. Exponents must be non-negative; a nega­ tive exponent will produce an error message. (Note: We have not men­ tioned division.) A "subscripted array expression" is an array expres­ sion followed immediately by a list of subscripts, each subscript being an integer expression, the subscripts being separated by commas, and the list of subscripts being enclosed in square brackets.

Examples:

(A + B) * (C + D) 2 " 2 * (K+1) -4 + M[K,0] ROW(I,A) * COLUMN(J,B)

10. Boolean Expressions

A Boolean expression is

1) a Boolean constant (TRUE, FALSE, or a string), or 2) the name of a Boolean variable, or 3) a relation, or 4) a congruence, or 5) a Boolean procedure call, or 6) any combination of the expressions above by means of paren­ theses and the Boolean operations AND, OR and NOT, according to the usual laws of Boolean algebra; (NOT has precedence over AND, and AND has precedence over OR.) or 7) a string.

A relation is a sequence of integer expressions separated by symbols from among <, <=, =, >=, >, #, DIVIDES. These symbols mean "less than", "less than or equal to", "equals", "greater than or equal to", "greater than", "does not equal" and "divides, respectively. A relation has the value TRUE if each of the relationships indicated between successive integer expressions holds; the relation has the value FALSE if any of the relationships fail to hold.

A congruence is either a = b MOD c or a # b MOD c, with a, b and c integer expressions, a = b MOD c is TRUE if c divides a-b and FALSE otherwise; a # b MOD c is FALSE if c divides a-b and TRUE otherwise.

Examples:

X~2 = -1 MOD 3 A AND NOT B OR NOT A AND B H DIVIDES K > 0 "Cold is deleterious to the mayonnaise" 16

11. Array Reference Calls

The array reference calls are VECTOR, MATRIX, ROW and COLUMN. One uses them to specify a sub-array of a given array by fixing some of its sub­ scripts. Let A be an array expression of dimension d. We write

VECTOR(i,A,s1,.... s ^ * s i+1,...,sd) to indicate the vector obtained by fixing all subscripts of A except the ith. That is, the kth subscript of A is set to s^, for k 4 i, leaving the ith subscript free, yielding a one-dimensional sub-array, i.e., a vector.

If d > 1 we write

MATRIX (i, j ,A, s.j,. .. , ®g_ i > ^g+1 > • • • » 1 ’ ®h+

(g s min(i,j), h = max(i,j)) to indicate the matrix obtained by fixing all but the ith and jth subscripts of A, with the kth subscript set to s^, k i i, k i j, the first subscript of the matrix being the ith sub­ script of A, the second the jth. In these reference calls, i and j must be integer constants, while s^,..., s^ may be arbitrary integer expres­ sions. (If i = j in a MATRIX call the compiler indicates an error.)

If d = 2 we may write

ROW(i,A) to indicate the ith row of A, or COLUMN(j,A) to indicate the jth column of A.

ROW(i,A) is precisely equivalent to VECTOR(2,A ,i), and COLUMN(j,A) is precisely equivalent to VECTOR(1,A,j). Examples:

1) If A has dimension 2 then MATRIX(2,1,A) indicates the transpose of A. 2) Suppose we wish to work with K NxN matrices, W1, ..., WR. We may declare

ARRAY W[1:K,1:N,1:N] and then write MATRIX(2,3,W,L) to indicate W. . L 3) ROW(7,MATRIX(2,3,W,L)) is precisely equivalent to VECTOR(3,W ,L,7).

12. Array Expressions

An array expression is

1) the name of an array variable, or 2) an array reference call, or 17

3) an array procedure call, or 4) A~N, where A is a two-dimensional array expression, and N is a non-negative integer expression, or 5) A*B, with one of A or B a two-dimensional array expression and the other a one- or two-dimensional array expression; thus may we have matrix multiplication or we may have a matrix acting on a vector from the right or left; (array multiplication produces an error message if the correspond­ ing bounds do not match.) or 6) A*N, N*A, with A an array expression, N an integer expres­ sion, or 7) +A, -A, A+B, A-B, with A and B array expressions; (The dimen­ sions and bounds of A and B must match exactly.) or 8) an array expression enclosed in parentheses.

Note that the language implicitly includes all the arithmetic operations in any ring of (finite-dimensional) matrices over the ring of rational integers.

Examples:

<(M + 3*I)*M + 2*I)*M - 4*1) PPRQD(F0,F1) P*Q - Q*P

13. Destinations

A destination is an expression that is capable of receiving (as opposed to merely having) a value.

An integer destination is

1) the name of an integer variable, or 2) a subscripted array destination, or 3) the name of an integer procedure.

Examples:

X M[3,K+1] GCD

A Boolean destination is

1) the name of a Boolean variable, or 2) the name of a Boolean procedure. 18

An array destination is

1) the name of an array variable, or 2) the name of an array procedure, or 3) an array reference call applied to an array destination.

Example:

ROW(3,A )

14. Statements

A statement is one of the following:

1) a simple statement, 2) a compound statement, 3) an if-statement, 4) a while-statement, 5) a for-statement, 6) a labeled statement, 7) a statement block.

15. Simple Statements

There are five types of simple statements:

1) GOTO statements, 2) assignment statements, 3) exchange statements, 4) division statements, and 5) untyped procedure calls.

16. GOTO Statements

A GOTO statement is of the form

GOTO L

where L is the name of a label. A GOTO statement causes a jump to the label L. That is to say, program execution proceeds with the next statement following the label. If the label itself is the last state­ ment in a block, i.e., if an END immediately follows the label, then execution proceeds with a block exit or a procedure exit, depending on the type of the block.

IT IS FORBIDDEN TO JUMP OUT OF A PROCEDURE BLOCK! GOTO statements in­ side a procedure may only refer to labels defined inside the same pro­ cedure. It is perfectly acceptable, however, to jump out of a statement block. 19

17. Assignment Statements

An assignemnt statement has the form

D := E where D is a destination and E is an expression of the same type as D. This statement causes the value of the expression E to be copied into the destination D. (The symbol ":=" is meant to suggest an arrow point­ ing leftwards.)

18. Exchange Statements

Exchange statements have the form

D1 :=: D2 where D1 and D2 are destinations of the same type. This statement causes the values of D1 and D2 to be interchanged.

19. Division Statements

Division statements have three forms:

1) Q := A / B 2) REM R := A / B 3) Q REM R := A / B with B an integer expression, A either an integer expression or an array expression, and Q and R destinations of the same type as A. When A, Q and R are of type integer, these statements set Q and R to be the quotient and remainder, respectively, of A upon division by B, with |R| < |Bi. The sign of Q is the product of the signs of A and B, and the sign of R is the same as the sign of A, so that the relation A = Q*B + R always holds. When A, Q and R are of type array, these statements cause each element of A to be divided by B, the quotients and remainders being stored in the corresponding entries of Q and R, respectively. The dimensions and bounds of A, Q, and R must match exactly.

20. Compound Statements

A sequence of simple statements may be strung together, separated by either of the characters 11!" or to form a single compound state­ ment. The language does not distinguish between the characters "!" and one may choose between them on esthetic grounds. Example:

X := X + 1 & Y:=X*X & GOTO L00P2 20

21. IF-Stafcements

If-statements have two forms:

1) IF B THEN S 2) IF B THEN S ELSE T

B must be a Boolean expression; S and T must themselves be statements. In form 1), the statement S is executed if and only if B is true; in form 2), S is executed when B is true, and T is executed when B is false. The construction

"IF ... THEN IF ... THEN ... ELSE ___ ", prohibited in ALGOL, is perfectly legitimate in ALGEB; the word ELSE is always matched with the nearest preceeding unmatched THEN. Example:

IF X < 0 THEM IF X < -5 THEN X := -5 ELSE X := X + 1 ELSE IF X > 0 THEN IF X > 5 THEN X := 5 ELSE X := X - 1

22. WHILE-Statements

A while-stateraent has the form

WHILE B DO S with B a Boolean expression and S a statement. The statement S is per­ formed repeatedly until the expression B becomes false. If B is false to begin with, then S is not performed at all. Example:

WHILE R < T DO R := 2*R

23. FOR-Statements

A for-statement has the form

FOR F := L DO S where F must be an integer variable or a subscripted array variable, L must be a for-list, and S must be a statement. A for-list is a se­ quence of for-list elements separated by commas. There are three types of for-list elements,

1) A 2) A,..., C 3) A, B,..., C 21

where A, B and C are integer expressions. Forms 2) and 3) indicate sets of integer values from the arithmetic progression A + kd, k >= 0. In form 2), d = A - E, where E is the last integer expression in the pro­ ceeding for-list element. If A,...,C is the first element in the for- list, then d = +1. In form 3)> d = B - A. If d >= 0 and C < A, or if d <= 0 and C > A, then forms 2) and 3) represent the empty set. Other­ wise they represent the finite sequence A, A+d, A+2d, ..., of all inte­ gers of the form A + kd between A and C, inclusive; C is included as the last value if and only if it is of the form A + kd. Examples:

(We suppose UPROC to be an untyped procedure with a single integer parameter.)

1) FOR Y := 1, 2, 3, DO UPROC(Y) calls UPROC three times, with Y = 1, 2, 3 successively.

2) FOR Y := 1, 3,..., 10 DO UPROC(Y) calls UPROC with Y = 1, 3, 5, 7, 9.

3) FOR Y := 1,3,...,10,8, ...,1 DO UPROC(Y) calls UPROC with Y = 1, 3, 5, 7, 9, 8, 6, 4, 2.

4) FOR Y := P, P+R,..., Q DO UPROC(Y) calls UPROC with Y = P, P+R, P+2R, ..., P+hR, P+hR being the last integer of the form P+kR between P and Q, inclusively.

24. Labeled Statements

Labeled statements have the forms

1) L : S 2) L : where L is a label and S is a statement, so that a label followed by a colon itself constitutes a statement (if a statement does not immediate­ ly follow), even though a label by itself does not produce any computa­ tion.

A label indicates a point where program execution proceeds after a GOTO statement.

We have form 2) when the label is the last statement in a block, i.e., when the word END immediately follows the colon. In this case, the statement "GOTO L" produces a block or procedure exit. CHAPTER II

THE ROUND TWO ALGORITHM

JU Background

The First and Second Round algorithms, given by Zassenhaus in [12] and [14], are based on the following theorem:

If V is an order (commutative or not) over Z, and if d(V) is the discriminant of V, then V is maximal if and only if, for every 2 rational prime p with p dividing d(V), and for every M containing pV, the left order of M,

[M/M] = {x : x fi QV, xM fisM],

is equal to V.

If V is an order and V is a maximal order containing V, then we say V is p-maximal if the rational prime p does not divide the index [V:V]. It is evident from the relation

d(V) = [V:V]2d(V) 2 that V is p-maximal if p does not divide d(V). It is also clear that V is maximal if and only if V is p-maximal for every rational prime p with p2 dividing d(V).

We now restrict our attention to the case that V is commutative. Sup­ pose that M is a maximal ideal of V containing pV, and that V. = [M/M]. 1 1 If x £ V, then xp €L M (because p £ M) so that x £ - m £ —V. Hence 1 1 P P V-jS'pVi so that the index [V^:V] is a p-power. It follows therefore that, if V is not maximal, then V is not p-maximal for some p with 2 p |d(V), in which case there is a maximal ideal M containing pV such that [M/M] is an order properly containing V.

We consider the (finite) collection M^, ... , M of all maximal ideals of V containing pV, and set s s J (V) = j T m . nM . K 1=1 1=1 (The M^'s, being maximal, are mutually prime, so that their product and intersection are equal.)

J (V)/pV is the radical of V/pV. Therefore we call J (V) the p-radical P P of V; «Jp(V) consists of precisely those elements of V some power of which lies in pV.

22 23

Note that [J (V)/J (V)] 2 [M./M.] for 1 ^ s , so that V is p-maximal P P J J precisely if [J (V)/J (V)] = V. Finally we let P P u = 7T p , p id(V) and define J„(V) = TTjJv) = f K c v ) • u i P p i u p i u We have [Ju(V)/Ju (V)] 2 [Jp(v)/Jp(v)3, so that V is maximal if and only if V = [Ju (V)/Ju (V)].

The following algorithm suggests itself:

1) Set d = d(V) and set k = d. Set V = V.

2) Set u =T p p : P prime, plk, p^id}. If u = 1 then V is maximal, so stop.

3) Set J = v \ i 4) For each p dividing u, compute J (V ) and replace J with jftjp(v'). P

t It 5) We now have J = J (V ). Compute V = [J/J], and set ii i u k = [V :V ]. ? 6) If k = 1 then V is maximal, so stop. Otherwise, replace p it i ii d with d/k , so that d = d(V ). Replace V with V , and go to step 2 ).

In step 5) we take advantage of the fact that, if p does not divide the it i i index [V :V ], then V is already p-maximal, so that p plays no further role in the computation. Such primes are omitted in step 2) in the cal­ culation of u.

2. The Complete Algorithm

We present here the Round Two algorithm for the case that V is the order of a separable polynomial over Q. By this we mean that

V = Z[t]/f(t)Z[t] = Z[v], where

v = t/f(t)Z[t] 24 with f Z[t], f monic, and d(f), the discriminant of f, not zero. We give the algorithm as the procedure ORDMAX in the ALGEB language, with explanatory notes interspersed.

GLOBAL PROCEDURE ORDMAX(F,P,E,PLIM,M,DELTA); INTEGER N.PLIM,DELTA; ARRAY F,P,E[1],M[2];

EXTERNAL INTEGER PROCEDURE GCD; EXTERNAL PROCEDURE IDENT; EXTERNAL PROCEDURE ROWRED; EXTERNAL PROCEDURE MATINV;

N := HIGHBD(1,F);

F is a one-dimensional array containing the coefficients of f, and N is the degree of f, so that

f(t) = F[N]*tN + F[N-1)«tN“1 + ... + F[1]»t + F[0].

We require f to be monic, so we must have F[N] = 1. PLIM must give the number of primes dividing the discriminant of f. These primes must ap­ pear in the array P as P[1], P[2], ..., P[PLIM], in increasing order. The array E must contain the exponents of the primes in P that divide d(f), so that PLIM .r !d(f) I = f t PtJl • j=1 The procedure will compute a Z-basis for the maximalorder in QV in the form of N polynomials in v with rational coefficients. The coefficients will have a common denominator which will be stored in DELTA, and the numerators will be stored in the array M, one basis element per row for rows 0 through N-1. The procedures GCD, IDENT, ROWRED and MATINV will be explained later.

BEGIN

INTEGER I,J,K,L,DISCR,PMAX, Q, S, U, U1;

ARRAY ID,COMPF,B,T,SP,JU[0:N-1,0:N-1], A[0:N"2-1,0:N-1), W[0:N-1,0:N-1,0:N-1];

STEP1: DISCR := 1; FOR S := 1,...,PLIM DO DISCR := DISCR*P[srE[S]; IDENT(ID); FOR I := 0,...,N-2 DO ROW(I,COMPF) := ROW(I+1,ID); FOR J := 0,...,N-1 DO C0MPF[N-1,J] := -F[j]; M := ID; DELTA := 1; 25

DISCR is now |d(f)|, ID is the NxN identity matrix, and COMPF is the companion matrix of f. We have set M = ID and DELTA = 1; in all that 1 _ ' follows, “M represents a Z-basis of the order V . Specifically, •) DiiLiA N-1 "~*M is the transition matrix from the basis [1,v,...,v ] of V to UciLl A | the basis [wn ,w.,,... ,wN ^ of V given by

1— *M DELTA

'N-1 V

Note well that the matrix M will always be lower-triangular. with the consequence that wQ = 1 at all times.

K := DISCR; STEP2: U := 1; FOR S := 1 PLIM DO IF P[S]*2 DIVIDES DISCR AND P[S] DIVIDES K THEN U := P[S]*U ! PMAX := P[S]; I DISCR is now !d(V )!. We set U to be the product of the primes p for I which V might not be p-maximal. The square of such a prime must divide i i d(V ), and, except when V = V, must divide the index of the previous I order in V . We store the largest prime dividing U in PMAX.

IF U # 1 THEN BEGIN STEP3: MATINV(M,B,DELTA); T := M*COMPF#B; B := DELTA*ID; FOR I := 0,...,N-1 DO MATRIX(2,3,W,I) := M[I,0]*B; FOR J := 1 , . .. ,N-1 DO BEGIN B := B*T / DELTA; FOR I := 0,.. . ,N-1 DO MATRIX(2,3,W,I) := MATRIX(2,3,W,I) + M[I,J]*B END; W := W / DELTA-2; I If U = 1 then V must be maximal, so we are done. Otherwise we proceed V to construct the multiplication table for V in the array W. Specifi­ cally, we want N-1 w. w. i J = E > ijk"k . 26 1 * Suppose A = """”"*M is the transition matrix from V to V . Then DbiL 1A N-1 w. = A. v* 1 and N-1 vi = Z > " >ikwk k=0 Also, N-1 g h v v 1=0 where C = COMPF, the companion matrix of f. We have for 0 i,j N-1

w.w. = A. vSA..vh i j ig jh

= S V j h (cg)hiTl ghl

gnXK Therefore,

w. .. = A.. (CB ). ,(A”1).. 1J ghl lg 3

= Z > (a c V 1)., „ ig Jk &

= 2 a (ACA"1)g . “ ig Jk O If we fix the first subscript of W at i we have a matrix, W^ , that des­ cribes the action of w. on the basis [w_,...,w„ „]. We have l 0 N-1

W. = ! £ a . (ACA-1)S . l * ig g 16 So we begin by calling MATINV(M,B,DELTA) to set

B = a"1 = (delta*m)~1 = DELTA*M"1 •

The procedure MATINV(X,Y,D) assumes that X is a lower-triangular NxN matrix with rational integer entries, and that D is a rational integer such that D*X”^ is in ZNxN> In such a case, MATINV sets Y = D*X”1. (We know B = A ^ is in because V is a sub-module of V .) We then set

T = M*C0MPF*B = DELTA*ACA-1 , 27

and set

B = DELTA*ID = DELTA*(ACA-1)° .

For 0 ^ i ^ N-1, we set

W. = M *B = DELTA*A *DELTA*(ACA-1)° l lO lO = DELTA2*Ai0*(ACA"1)° .

Then, for 1 ^N-1, assuming B = DELTA*(ACA-1)^-1, we replace B with

B*T/DELTA = DELTA*(ACA-1)^-1*DELTA*(ACA-1)/DELTA

= DELTA*(ACA-1 .

We add

M. .*B = DELTA*A. .*DELTA*(ACA-1)j ij iJ = DELTA2*A. ,*(ACA-1 X J to W., so that when j = N-1 we have 1 N-1 W . = J^DELTA *A. .* (ACA- )J , 1 J i =0 1J 2 2 which is too large by a factor of DELTA . So, we replace W by W/DELTA , i yielding the correct multiplication table for V .

IF PMAX > N THEN BEGIN SP := 0*ID; FOR I := 0,...,N-1 DO FOR J := 0,...,N-1 DO FOR K := 0,...,N-1 DO SP[I,J] := SP[I,J] + VECTOR(3,W,I,K)*VECTOR(2,W,J,K) END;

If a prime greater than N divides u, we will need to use the trace matrix SP, defined as

SP. . = TrCw.w.) = Tr(W.W.) ij _ i J i J

= Z > i V i * k

lkl jlk 28

The terra (W.W.).. is just the dot product of the vectors 1 J KiC (WikO,Wi k r ' “ ’WikN-1) and (Wj0k’Wj1k’ * ‘' ’Wjn-1k* ’ which are specified in ALGEB as VECT0R(3,W,i,k) and VECTOR(2,W,j,k), respectively.

FOR I := 0,...,N-1 DO ROW(I, A) := U*R0W(I,ID); STEP4: FOR S := 1,...,PLIM DO IF P[S] DIVIDES U THEN BEGIN U1 := U/P[S]; IF P[S] > N THEN T := SP ELSE BEGIN FOR J := 0,...,N-1 DO BEGIN COLUMN(J,B) := COLUMN(0,ID); FOR K := 1,. ..,PCS] DO COLUMN(J,B) := C0LUMN(J,B)«MATRIX(2,3,W,J) END; Q := PCS]; K := 1; WHILE Q < N DO Q := PCS]*Q ! K := K + 1; T := B~K END; FOR I := 0,...,N-1 DO ROW(N+I,A) := U1*R0W(I,T); ROWRED(A,2»N-1,N-1) END; t We must now construct J (V ) = fl J (V ). For each prime p dividing u U i P , piu we express Jp(V ) implicitly with the matrix Tp as the set of all x = x0w0 + ... + xN_1w^_1 with xQ , ..., xN_1 € Z satisfying

€ PZNx1

N-lj or, equivalently, 1

£ uz P P Nx1

N-1, 29

The condition that x ^ V , i.e., that Xq , ..., x^ ^ € Z , we express as

uID € uZ Nx1

It is clear that JU (V ) is the set of all x satisfying all the above conditions simultaneously. If p., ..., p are the distinct primes div- I s iding u, then we obtain a set of N(s+1) relations on Xq , ..., x^ ^ that precisely define JU (V ). We use Hermitian row-reduction to reduce this set to an equivalent set of N independent relations, which will appear f as the first N rows of the matrix fl. That is to say, (V ) will be the set of all x .. + xN_1wfJ_1 satisfying X0W0 +

€ uZ (1 ) Nx1

N-1 where A is the NxN matrix consisting of the first N rows of the matrix A.

In constructing the matrix Tp we distinguish between the case that p > N and the case that p^N.

If p > N then it is well known (see [3]) that

J (V ) = {x : x € v , Tr(xw) S o (mod(m p) P for all w ^ V }, f the D-trace-radieal of V .

We have

Tr(xw) S 0 (mod p) for <=>

Tr(xw.) • 0 (mod p) for N-1 1 J ^ x Tr(w w ) Si 0 (mod p) for <=> j=0 3 h 1 3 SP .

\ViJ So in case p > N we simply set = SP.

If p ^ N it may happen that the p-trace-radical is larger than the 1 p-radical. We consider the linear transformation of V that sends w^ to wP, 0 ^ j ^ N - 1 , and we construct the matrix B of this transformation, defined by

wP = > ~Hb . .w . 3 kj k To find B, we observe that the action of wP on the basis [w-,...,w„ . ] j 0 N-1 is given by WP:

wPw. = y * (VI.)P.. w. J i J ik k In particular, N-1

h 4 = w j” o = so

the jth column of B is the Oth row of (W.)P . This we produce by multi- <3 plying the vector (1,0,...,0) on the right p times by W.. Note that, if J /*:

* i x, N-1, N-1 J i and if x = xQvrQ + ... + xN iwN_i > then

Bx = xP (mod pV ) k-1 v k We determine k such that p < N ^ p ; we have k We proceed by first setting A = uID. For each p dividing u, we form T u ^ as described above and we copy ~T into rows N through 2N-1 of A and use P P the procedure ROWRED to reduce the matrix A to upper-triangular form (via unimodular row operations).

STEP5: FOR I := 0,...,N-1 DO COLUMN(I,B) := R0W(I,A); MATINV(B,JU,U); FOR K := 0,...,N-1 DO BEGIN T := JU*MATRIX(2,3,W,K)*B / U; L := 0; FOR I := 0,...,N-1 DO FOR J := 0,...,N-1 DO A[L,K] := T[I,J] ! L := L + 1 END; ROWRED(A,N~2-1,N-1); K := 1; FOR I := 0,...,N-1 DO K := A[I,I]*K;

From (1) above it follows that the solutions for x are given by the —_1 — T — column-space of uA We set B = A , the transpose of A; then »w„ given by [w0 ’ w„ -1 uB

VI, Vi I N-1 -1 is a Z-basis for Ju(V ). We call MATINV(B,JU,U) to set JU = U*B it t t Our task now is to construct V = [J (V )/J (V )] Let u u QV and let C be the transition matrix y = yoVo + ,yN-1WN-1 y from V to yJu(V ), so that / ' yw-0 wr = c

yw. w, N-1 N-1

» » Since JU is the transition matrix from V to J (V ), it follows that -1 i u » C *JU is the transition matrix from J (V ) to yJ (V ). Therefore, y u ' j u ’ 32

We observe that 1 y'ij j = yw-i■'"i

= C w i k

= 1 1 yk\ J o ih"f kh

= > y. JU. .W. , .w. khj k lh khJ J So cy = 2 I v IU% and C *JU_1 = y*y, JU*W, *JU~1 y k

= ^ Y kJU*Wk*B/u . k fl We see that V is the set of all y satisfying

c *j u "1 ^ ZM „ , y NxN * which is equivalent to

(2) T " >1 (JU*W. *B) . .y. € Z, for 0 ^ i , j ^N- 1 . , U K X J K 2 2 We record these N relations in rows 0 through N -1 of the matrix A, and use the procedure ROWRED to reduce A to upper-triangular form. Again we denote by A the first N rows of A; after reduction the rows of A give N independent relations for y.

ii it it We now have a Z-basis [wQ ,...,wN ^] for V , given by

= r TI

N-1 N-1 —_t A being the inverse of the transpose of A. It should be noted that, • i i — f because V is a sub-module of V , the matrix A , being the transition it i — matrix from V to V , lies in Zx. ... Therefore A also lies in ZM ... so ’ NxN NxN’ that the entries of A were already in Z before the reduction. Hence, all of the coefficients of the yk 's in (2 ) above are integral, so that 33 we may perform the division by u before we do the reduction. The index ti i i it —T — [V :V ] of V in V is given by the det(A ) = det(A) of the — jp — — transition matrix A . A being triangular, we compute K = det(A) as the product of the diagonal elements of A.

STEP6: IF K # 1 THEN BEGIN DELTA := K*DELTA; DISCR := DISCR / fT2; MATINV(MATRIX(2,1,A),B,K); M := B*M; L := DELTA; FOR I := 0,...,N-1 DO FOR J := 0,...,I DO L := GCD(M[I,J],L); IF L > 1 THEN DELTA := DELTA/L ! M := M/L; GOTO STEP2 END END END

END

it i — ._T 1 If K = 1 then V = V and we are done. We compute A explicitly as ~B; — _T we use MATINV to set B = KA . The transition matrix from [wn ,...,wN .] it it i it u to [wQ ,... ,wN_1] is k'#d e LTJ^B*m ; the discriminant of V is

d(v") = d(v')/[v":v']2 = d(v')/K2 . I II So, to replace V with V , we replace M with B*M, DELTA with K*DELTA, 2 and DISCR with DISCR/K . Lastly we remove any common factor that may have been introduced in DELTA and the entries of M. We return to STEP2 I to test the new V for maximality.

3. External Subroutines

In this section we list and describe the external procedures used by the ORDMAX routine.

GLOBAL INTEGER PROCEDURE GCD(X,Y); VALUE X,Y; INTEGER X,Y; WHILE Y # 0 DO REM X := X / Y ! X :=: Y; GCD := ABS(X) END 34

The GCD routine computes the greatest common divisor of the integers X and Y as a non-negative rational integer.

GLOBAL PROCEDURE IDENT(A); INTEGER I,J,N; ARRAY A[2]; EXTERNAL INTEGER PROCEDURE KDELTA; N := HIGHBD(2,A); FOR I := 0,...,N DO FOR J := 0,...,N DO A[I,J] := KDELTA(I,J) END

IDENT sets the matrix A equal to the identity matrix.

GLOBAL INTEGER PROCEDURE KDELTACX,Y); INTEGER X,Y; IF X = Y THEN KDELTA := 1 ELSE KDELTA := 0 END

KDELTA is the Kronecker delta function.

GLOBAL PROCEDURE ROWRED(A,RLIM,CLIM); INTEGER C,I,J,K,L,RLIM,CLIM; ARRAY A[2];

EXTERNAL INTEGER PROCEDURE NQUOT;

PROCEDURE NORMALIZE; K := NQUOT(A[I,C],A[C,C]); ROW(I, A) := ROW(I,A) - K»R0W(C,A) END;

FOR C := 0,...,CLIM DO BEGIN RLOOP: L := C; WHILE A[L,C] = 0 DO L := L + 1; FOR I := L+1,...,RLIM DO IF 0 < ABS(A[I,C]) < ABS(A[L,C]) THEN L := I; IF L # C THEN ROW(C,A) :=: ROW(L, A); IF A[C,C] < 0 THEN ROW(C,A) := - ROW(C,A); FOR I := C+1,...,RLIM DO IF A[I,C] # 0 THEN NORMALIZE; FOR I := C+1,...,RLIM DO IF A[I,C] # 0 THEN GOTO RLOOP; FOR I := 0,...,C-1 DO IF A[I,C] # 0 THEN NORMALIZE; END END 35

ROWRED performs Hermitian row-reduction on the matrix A to reduce A to upper-triangular form. ROWRED assumes that the columns of A are num­ bered 0 through CLIM, and that the rows involved are numbered 0 through RLIM. ROWRED further assumes that RLIM ^ CLIM, and that the columns of A are independent. When ROWRED has finished, the diagonal elements of A are all positive, the elements below the diagonal are zero, and the ele­ ments above the diagonal in column C are no larger than A[C,C]/2 in ab­ solute value.

GLOBAL INTEGER PROCEDURE NQUOT(X,Y); INTEGER X,Y; IF 2*X <= Y THEN NQUOT := 2*X - Y / 2*Y ELSE NQUOT := 2*X + Y - 1 / 2*Y END

NQUOT gives the "normalized quotient" of X and Y, which is to say an integer Q such that -Y/2 < X - Q*Y Y/2 . NQUOT assumes that Y is positive.

GLOBAL PROCEDURE MATINV(X,Y,D); INTEGER D,I,J,K; ARRAY X,Y[2];

EXTERNAL PROCEDURE IDENT;

K := HIGHBD(1,X); IDENT(Y); FOR I := 0 K DO Y[1,1] := D / X[1,1]; FOR I := 1,...,K DO FOR J := 1-1, 1-2,..., 0 DO Y[I,J] := -ROW(I,Y)*COLUMN(J,X) / X[J,J]

END

MATINV sets the matrix Y equal to D*X . MATINV assumes that X is lower-triangular, and that the rows and columns of X are numbered 0 through K. MATINV also assumes that the the value of D is such that the entries of D#X are all rational integers. CHAPTER III

THE ROUND FOUR ALGORITHM

1. Preliminary Remarks

Experience with the Round Two algorithm has revealed two undesirable properties:

1. The construction of the multiplication table and the trace mat- 4 rix each require n operations, so the algorithm is no faster 4 than 0(n ). Of more significance for the range of n that con­ cerns us in this paper (n^15) is the fact that the algorithm often ascends to the maximal order as slowly as possible; if p is the largest power of the prime p dividing the index of the original order in the maximal order, it commonly takes k+1 steps to reach the maximal order. (By "step” we mean the construction of the idealizer of the p-radical of the previous order.) One wishes to have a method that ascends more rapidly— at least in steps of powers of p higher than the first. •3 2. The multiplication table requires n entries. On our PDP-11 with 28K words, this limits us to degrees of 22 or less. Doubt­ less some of this space could be recovered (at a great cost in execution time) but the space requirement for the algorithm 3 would still be 0(n ). A method that used less memory space would be preferable.

Berwick's algorithm [1] to produce the maximal order in an algebraic number field suffers from neither of these drawbacks. The central step in Berwick's algorithm is the expansion of the defining polynomial f modulo a power of a rational prime p. Tha algorithm proceeds via manip­ ulation of polynomials and field elements, so that one would expect the 4 execution time to be of an order well below n . The Berwick method has been used by Kaur [5] and Liang and Zassenhaus [9], but statistical data on the behavior of the algorithm is not available. The Berwick method is not an acceptable replacement for the Round Two algorithm be­ cause, as Berwick himself noted, it is not completely general; there exist number fields for which Berwick's method does not give the maximal order. Furthermore, there does not seem to be any simple way to close this gap.

So, to produce an algorithm in the spirit of Berwick that is effective in every case, we must introduce a new idea. The key to the Round Four

36 37 algorithm, then, is the following "Structural Stability" theorem of Zassenhaus [17]:

Let p be a rational prime and Qp the p-adic completion of the rational field Q. If H and H are commutative semisimple hyper­ complex systems of the same dimension over Q^, and if the differences of the corresponding entries of the multiplication 1 tables for H and H all have sufficiently large (additive ex- f ponential) p-adic value, then H and H are isomorphic over Q . P We will see in Section 4 how to apply this theorem in case we have a factorization of f modulo a sufficiently large power of p to reduce the problem from that of finding a p-maximal order of degree n = [f] to one of finding the p-maximal order in two algebras the degrees of which have sum n.

Because of the p-adic nature of many of the operations in the Round Four algorithm we will be obliged to consider separately each rational prime p the square of which divides the discriminant of the original order. For each such p we will produce a maximal p-extension order. Such an 013X order is in fact p-maximal. If V is the original order and if V is D_max the maximal order, then we define V /V to be the Sylow p-subgroup of vraax/V. vp_max is simply the set of all x € Vmax such that pkx € V for some natural number k; sums and products of such numbers also have the same property, so vp_max is indeed an order. Vp max is plainly both p-maximal and a maximal p-extension of V.

d —max The Round Four algorithm computes a Z-basis for for every prime p for which V is not already p-maximal. It is then a simple matter to form a Z-basis for the module-theoretic sum of these p-extension orders. It is clear if we consider the index that the resulting order is p- maximal.

2-x. Definitions

In what follows, we take f to be a of degree n with rational integer coefficients, having discriminant d(f) not zero. We do not assume that f is irreducible over Q.

For p a rational prime, Qp denotes the p-adic completion of the ration- als, and Z , the "p-adic integers", the set of integral elements in Q . P P The polynomial algebra I is the commutative hypercomplex system

Af = Q[t]/f(t)Q[t] . 38

We set u = t/f(t)Q[t] so that Af = Q[u] .

Thus V^. = Z[u] is the equation order of f (see the Introduction). mdX We denote by V^. the maximal order in A^,, and for the rational prime p D-max we denote the maximal p-extension order of V„ in A_ by Vv! . We take f f f q to be a power of p sufficiently large that it does not divide d(f). Most of the calculations that follow will involve, in principle, p-adic integers, but will be done, in fact, with rational integer approxima­ tions that are correct modulo q.

We define vp : Af — > Q (J{ 00} to be a particular extension of the (additive exponential) p-adic valu­ ation of Q to all of A., v satisfies f P (i) v (1) = 0 ; v (p) = 1; v (0 ) = 0 0 r r r (ii) v (xy) = v (x) + v (y) P P P (iii) v (x+y)^ min(v (x),v (y)), \r r r with v (x+y) = min(v (x),v (y)) whenever v (x) 4 v (y). P p ’p-' p pJ In case A^. is not a field, we may have vp(x) = 00with x i 0. In any case, the elements x of A for which vp(x) = 00 form an ideal I such that A/I is a field on which vp induces a sharply additive exponential val­ uation. (That is to say, v (x/I) = 0 0 <=> x/I = 0/1.) P We define vp : Af — > o U 100} by * ~ v (x) = min{v (x) : v an extension of the p-adic P P P valuation of Q to A^} We say that v (x) is the p-star value of x. P

If x € V£ax and vp(x) then

vp(x/p*/ / r>> ) ^> 0n => v x/p/ r^» € Vf,,max => v x ^€ P r,,maxVf . 39

If x € Vf, x/p ^ Vf , and x/pr € V^aX then pr ![V™ax:Vf]. If q = pk we have p^r|pk""^; r ^ (k-1)/2. Hence, if s is the greatest integer in (k-1)/2 , we have vp-max ^ (1/ps)Vf .

msx ^ If y € Vf then v^(y) is computable as follows: Suppose ,k , .k-1 , m = t + b, t + ... + b, ; y 1 k then

(3) = rain v (b.)/j . p l £ j ^ k p 3 This we can see if we adjoin all the roots of m to Q[y] and extend v # y - P to the resulting system, v (y) is the minimum value of v (y) for all P P conjugates y of y. The formula (3) follows when we consider the coeffi­ cients of my as symmetric functions in the conjugates of y. (See [8], pp. 89-91.) ma v We define the ideal I in V_ as P f I = {x € v“ax : v*(x) > 0} . P f P Note that, if V is any order in Af , then I O v is the p-radical of V. ^ P (The p-radical was defined in Chapter II.)

Let x A^, and let k be the smallest natural number such that the set {1,x,...,xk} is dependent over Q; since A„ has dimension n over Q we know k n. The unique dependence relation on 1, x,..., x with the coefficient of x equal to 1 is called the minimal polynomial of x over Q, and is denoted by m^. (See [11], p. 141.) In particular, f = mu> If is congruent modulo p to a power of a single polynomial that is irreducible modulo p, then we say x is p-primarv. and we denote by m P > x the unique irreducible factor of mx (mod p).

If x is p-primary the irreducibility of m (mod p) implies that P > x J (Z[x]) = I flz[x] = m (x)Z[x] , P P P.x so that we may characterize m as the minimal polynomial of x/J (Z[x]) p ,x p in Z[x]/J (Z[x]) or, equivalently, as the minimal polynomial of x/I P P in V_/I . f P 40

If x is a p-primary integral element of A„ such that [m ] = n and # I X v (m (x)) = 1/[m ] then we call x an Eisenstein element of A_. p p ,x P »x f We choose this name because any root of an "Eisenstein polynomial" (See [11], p. 95) is an Eisenstein element. We vail see in Section 5 that a polynomial algebra containing an Eisenstein element is p-maximal.

An extension vp of the p-adic valuation to Af takes on the values (1/k)Z (J{003, k being the exact power of the corresponding irreducible factor f of f in Zp[t] that divides f; plainly, k[f] $ n, so k 4 n/[f]. If g is an irreducible factor of f mod pZ[t] of smallest degree then [g]^[f], so k$n/[g]. Hence, if x € I , then v (x) ^ [g]/n. H r

3j. Criteria for p-Maxlmalitv

Let f.j C Z[t) be a monic polynomial of least degree such that f^(u)/p is integral; f is unique modulo pZ[t]. Berwick [1] points out that f di­ vides f modulo p, which is to say that the remainder of f divided by f^ lies in pZ[t]. Berwick also shows that f divides a power of f1 modulo p, so that every irreducible factor of f (modulo p) is also a factor of f^ (mod p). It is clear that is p-maximal <=> ^ £ f (mod pZ[t]) <=> [ f ^ ] = n = [f]. We say V^. is p-extendible if maX 4 Vf . Vf is p-extendible <=> [f^] < [f], and in this case there is a monic polyno­ mial g C Z[t] with [g] > 0 that is irreducible mod p such that g divides f^ mod p and gf^ divides f mod p. Suppose f^ has the factorization

f1 5 gf2 (mod pZ[t]).

We may write

f £S gf-]f3 S S2f2fB (mod PzCt]) so that

f = g2f2f3 + pf4 = g2f2f3 + Pgf5 + Pf6 » with [fg] < [g]. Setting

b = g(u)f2(u)/p € vP-m3X we have

f2f = g2f|f3 + pgf2f5 + Pf2f6 41

so that

0 = g2(u)f2(u)f3(u) + pf2 (u)g(u)f,-(u) + pf2(u)fg(u)

= p2b2f^(u) + p2bf^(u) + pf2(u)fg(u)

and therefore

f2(u)f^(u)/p = - b2fg(u) - bf^(u)

But [fgfg] < [f2g] = Cf.,], so f2fg 5 0 (mod pZ[t]), and

f2 j^0 (mod pZ[t]) => f g S O (mod pZ[t]) => fg = pf^ , with f^ € Z[t]. So we may write

f = g2f2f3 + pgf5 + p2f? .

Now suppose we only know that 2 2 f = g hQ + pgh1 + p h2 with g, hQ, h1, h2 CZ[t], g monic, [g] > 0. Then we set b = g(u)h^(u)/p. ghQ must be monic, and [ghQ] < [f], so b^V^,. But b satisfies the equation

t2 + h^(u)t + hQ (u)h2(u) = 0

in which the coefficients h^u) and hQ(u)h2 (u) are integral, so d—max b , and therefore Vf is p-extendible. We call this result the Berwick Criterion;

V is p-extendible if and only if f can be decomposed as

(4) f = S2hQ + pgh1 + p2h2

with g, hQ , h^, h2 € Z[t], g monic, [g] > 0.

For constructive purposes we use the equivalent Dedekind Criterion [15]. Suppose

f Sg!l.*.ges (mod pZ[t]) I s is the complete factorization of f mod pZ[t],

f0 S s r ..gg (mod pZ[t]) , H2 and

f g 5 f0fi (mod Pztfc3) » with fg, f^ monic in Z[t]. We set

h = (f - fjjf^/p , and set

g = GCDp(h, fQ ) .

(GCD means the greatest common polynomial divisor over the field with P p elements.) The Dedekind Criterionstates:

Vf is p-maximal if and only if [g] = 0.

This criterion is easy to apply, because we can find g using only poly­ nomial multiplication, division and GCD operations over the field.with p elements.

If [g] > 0 then we may take g to be any irreducible factor of g mod p to produce the Berwick decomposition (4). Conversely, if (M) holds, then it is easy to see that any irreducible factor of g (mod p) will appear as a factor of g (mod p).

U. Algebraic Decomposition

We apply the Structural Stability theorem from section 1 by means of a corollary from [17]:

Let f1 and f^ be monic polynomials of the same degree with rational integer coefficients. Let p be a rational prime, and let q be a power of p not dividing d(f^), the discriminant of f1. Suppose also that the coefficients of f^ and f2 are con­ gruent modulo q, and that u^ is a root of f^ and a root of fg. If h(t) € ancl h(u-|) is an then h(u2) is also an algebraic integer.

It follows that, if [w_(u,),...,w .(u,)] is a Z-basis for the maximal 0 1 n-1 1 p-extension order of Z[u^] in Q[u^], then [wq(u2),...,wn 1(u2>] is a Z-basis for the maximal p-extension order of Z[u2] in Q[u2], 43

Thus the first part of our strategy reveals itself: in the process of constructing a Z-basis for the maximal p-extension order of Z[u] in Q[u], we will shift our attention from f to g, g congruent to f modulo qZ[t], whenever we find it advantageous to do so.

We apply this strategy when we discover a factorization

(5) f a s gjg2 (mod qZ[t]) , in which case we set g = g^g2 - The factors g^ and gg will always be relatively prime; otherwise d(g), the discriminant of g, would be zero, contradicting our assumption that q did not divide d(f).

We perform the decomposition implied by

(6) A 2 S 4 + A . 6 S-j Because ,.p-max r** p-max „ p-max S S V v + V F 6 ^2 we may obtain a Z-basis for vp-max directly from bases for vp”max and p-max ® . So instead of searching for the maximal order in an algebra of degree n = [g], we work successively in two sub-algebras of degrees n 1 = Cg1] and ng = [gg].

Let R(g^,g2 ) be the resultant of g^ and g2< The relationship 2 d(g) = d(g1g2) = Rtg^g) d(g1)d(g2 ) shows that q, not dividing d(g), does not divide either of d(g.) or d(g2).

The factorization (5) arises when we find elements e.Cu), e? (u) € vp"max such that

(i) v (e1 - e^) > 0 , v*(e2 - e2) > 0 , * (ii) vp(eie2) > °» « (iii) v (e.. + e0 - 1) > 0 . P 1 2 It follows (see [15]) that there exist idempotents e^, e2 € Q [u] such that v (e. - e.) > 0 for v any extension of v to Q [u]. P J J P P P HU

We have

Qp[u] = Af = e^kf + e2Af

so that

f = ’1 2 with gj being the monic polynomial in Z^[t] of minimal degree such that e.;g.(u) = 0, for j = 1, 2. g.(t) is just the GCD of f(t) and e_ .(t) 1 j*l over Q . P g 1 and g2 , having p-adic coefficients, are, in general, not construc­ tively accessible. However, our purposes are well enough served if we approximate g1 and gg by g^ and §2 , respectively, with coefficients cor­ rect only modulo q. Then we have

f 25 ? = § ^ 2 (mod qZC t]) , so we apply the Structural Stability theorem and shift our attention to

i*, A*. + A ma ■ r s, s.2 _ To get g., j = 1, 2, we refine e. as an approximation to e . by repeat- J i 2 o ^ edly making the substitution e. := e. = 3e . - 2e. (see [15]), until we » 1111 have e . S e . (mod qZ[u]). Then g. is the monicpolynomial in Z[t] of J J J minimal degree such that e.g.(u) € qZ[u], 1 1 Suppose now that we have an integral element b € Af with minimal poly­ nomial satis!;ing

(7) £ E (mod pZ[t]) with h.j, h2 monic, GCDp(h1fh2) = 1, [h1 ] > 0, [h2] > 0. Then we can find polynomials a^t), a2(t) in Z[t] such that

a1h1 + a2h2 S 1 (mod pZ[t]) and [a^] < Ch2], [a2 ] < [h^]. In this case we set

e 1 = a1(b)h1(b), e2 = a2(b)h2(b) .

It follows that e1 - e^, e2 - e2, e . ^ and e1 + e2 - 1 all lie in pZ[b], and therefore all have p-adic value at least 1. Therefore e^ and e2 45

satisfy conditions (i), (ii) and (iii) above and from them we may obtain a factorization of f modulo qZ[t].

Our next strategic principle, then, is this: Whenever we find an inte­ gral element b satisfying (7) we construct the elements e1 and e^ as described above and use them to perform the decomposition (6), thereby reducing the degree of the problem.

5. The p-primarv case

If b C A. is integral and no factorization of the form (5) exists for m,_ r b then mb must be a power of a single irredeucible polynomial mod pZ[t], so that b is p-primary. In this section we assume that every element that appears is tested and found to be p-primary; we have already seen in section 4 how an element that is not p-primary gives a factorization of f mod qZ[t], by means of which we may reduce the degree of the prob­ lem.

If b is an Eisenstein element for A„, then Z[b] is p-maximal. To see k * this we suppose that m. a s m . (mod pZ[t]), so v (m . (b)) = 1/k. * k b““ p,b * p p>b k Therefore v (m .(b) ) = 1, so that v ([m. (b) - m (b) ]/p) = 0. P P.b p b p,b Consequently m , cannot be a factor of (m. - m . )/p mod pZ[t] and P,b b p,b V = Z[b] is p-maximal by the Dedekind Criterion. mb Now we give a procedure that leads in a finite number of steps either to a factorization of f mod qZ[t] or to a demonstration of the p-maximality of Vf , usually by the exhibition of an Eisenstein element. (The number­ ing of the steps corresponds to the labelling in the NILORD routine in the next chapter and is therefore somewhat irregular.)

1. We begin with Vf = Z[u], f = mu , n = [f], u p-primary, so that

m S m (mod pZ[t]). u p,u 2. Set aQ = u. Note— we will always have [aQ] = n.

3. Set N = n/[m ], so that m Ss(m )Na (mod pZ[t]). If N = 1 p,a0 a0 p,a0 a then Z[ag] is p-maximal by the Berwick Criterion, so we set Vp a = Z[aQ] and stop. If vp(aQ ) > 0> replace aQ with aQ+1• (From this point on, we will always have vp(ag) = 0 .) * Set a. = m (an), and set L /M = v (a.), with L and M rela- 1 p,aQ O ’ a a p 1 ’ a a tively prime rational integers. Find non-negative rational integers 46 r* 3 ^ r and s such that rL - sM = 1 , and set a0 = a./p , so that v (a0) a a 2 1 ’ p 2 = 1/M . If M = N and L = 1 then an is an Eisenstein element. If a a a _a 0 M = N and L > 1 , set an = an + a. + kpa-., with k in Z chosen so a a a ’ 0 0 2 ^ 0 ’ that [m- ] = n. In this case we have a0 + kpa_ I , so rn ~ aQ 2 0 p P» o = m . Then p,a0 _ "p,I0(V = mp,a0 * * (a2*kPao) h(a0 ’a2 ) with h 6 z[t1 ,t2] .

m irreducible mod p p,a0 => m' (a.) ^ m (a_)Z[an] = J (Z[a ]) p,a_ 0 ** p,a_ 0 0 p 0 # J0 K,“0 => v(m' (a)) = 0 . P P >a0 0 Therefore the p-star values of the terms in the sum above are L /M , a a 1/Ma> and at least 2/Ma> respectively, and

v (m — (an )) = v (m (an)) = 1 / M , p p,aQ O' p p,aQ 0 a so that aQ is an Eisenstein element. In either case, Z[aQ ,a2] con­ tains an Eisenstein element, so we set max = Z[aQ,a2] and stop, m is the only irreducible factor of m mod pZ[t], so P>ao * ^ ao v (x) ^ [m ]/n= 1/N P P f ^ for all x in Ip. The preceeding construction shows how we can ob­ tain an element with p-star value 1/M from one having p-star value with (reduced) denominator M: it follows that no element of I has ^ P value with denominator larger than N . In particular, M . We cl 3 3 have dealt with the case M = N , so from here on we assume M < N . a a ’ a a 4. If L = 1, go to step 9. 3 5. Set a = a~ + a_: we have m — = m 0 2’ p,a P,aQ Before going on, let us examine the case where we have a, b €. vP maxt with k = [m ], 1 = [m . ], and Ilk. Let F = Z[a]/I and F. p,a P,b a p b = Z[b]/Ipj and Fb are finite fields with pk and p1 elements, respectively. Their intersection F is a field with pm elements, 0 47 ra = GCD(k,l). Z[a,b]/I is the direct sura of F and F. over F . If ’ 1 p a b c Z[a+b]/I is not a field then m . i s divisible by both in and u p a+b p,a p,b mod p so that a+b is not p-primary and we are able to factorize f mod qZ[t] and obtain the decomposition^of section 4. Otherwise, we suppose that r is minimal such that (a+b)P 23?a+b (mod I ). We have p r r ap 2 5 a (mod I ) and bp £ 5 b (mod I ) P P so that r is a multiple of k and 1. But these last three congruences are satisfied if we take r = LCM(k,l). Therefore Z[a+b]/I is a field r P r with p elements, and [m , ] = r = LCM([m ,m . ]). p } S+ D p | 3. P | D 6. If [m ~ ] divides [m ] set u = a; otherwise set u = a + a_ p,a p,a0J 0 (with the consequence tnat [m — ] > [m ]: note that such a p,u p,a replacement can occur only finitely many times.)

6A. While Cnrj] < n, replace u with u + pag. Replace a^ with u and go to step 3.

9. Set bQ = p(a2)Ma, so that bQ € Vp-max, bQ fl Z[aQ], and v*(bQ) = 0.

10. If [m . ] J [m ], set u = b- + a0 (so that [m — ] > [m ]) and P,bQ P»aQ 0 0 p,u p,aQ go to step 6A. # Set b. = m . (b,J: set L./M. = v (b.), L. and M, non-negative rela- 1 p, bp 0 ' bb pl b b tively prime rational integers; find non-negative rational integers 1? s ^ r and s such that rL. - sM. = 1, and set b„ = b,/p ; v (b„) = 1/M. . b b c i p <£ d 11. If M, ^ M determine non-negative rational integers A, B and C such — B A C that AM + BM. - C = GCD(M ,M. ). Set a = art + a_b_/p , and go to a b #a b__ 0 2 i step 6. (In this case, v (m “ (a)) = 1/LCM(M ,M. ) < 1/M ; this p p,a a b a condition can arise only finitely often, because no proper denomi­ nator larger than N may appear in the p-star value of an algebraic integer in Af .) % * 12. If Vp(bQ ) i 0 then mp b (t) = t, and b1 = bQ , so that vp(bQ ) =

L./M. . Set K = M v (b_) = v (b_)/v (a,), set a = a^. If a is a b b apO. p0p1’ 1 zero divisor, express a as a polynomial h(u) in u with rational co­ efficients. Then f and h have a non-trivial GCD over Q, so we ob­ tain a proper factorization of f over Z and we nan perform the de­ composition described in section 4. Otherwise a has an inverse in 48

— _ 1 f t f t f t —* Afl so set Cq = bQa . Then vp(cQ ) = vp(bQ ) - vp(a) = 0. Multiply cQ by a suitably chosen rational integer R with vp(R) = 0 to make cQ integral. Proceed with cQ as with bQ at steps 10 and 11: If [m ] does not divide [m ] set u = c_ + a_ and go to step 6A. 0 0 it r s Otherwise set c„ = m (cn). L /M = v (c.), and c„ = c„/p , r 1 p,Cq 0 ’ c c p 1 * # 2 1 y * and s suitably chosen to make c2 integral with vp(c2) = M If M find A, B, C in Z so that c = a^c*/p^ is integral with § „ a _ _ 2 2 v (c) = 1/LCM(M ,M. ); set a = a_. + c and go to step 6. p a b 0 Let us again pause and examine the situation. Suppose k = [mp g ] and 1 = Cm ]; to have reached this point we must have 1 !k. Z[a_]9l is a p* D k 0 p 1 -field witn p elements and therefore contains a unique subfield with p elements. If Z[a_.,c-.]/I is a field then it also contains a unique ^ 0 0 p subfield with p elements. Z[cQ]/Ip is such a field, while Z[a0]/Tp contains such a field; they must be identical, so Z[c_]/I £z[a„]/I , 0 p 0 p and c_ £ Z[a_] + I . u u p If Z[aQ,CQ]/Ip is not a field then it is the direct sum of Z[aQ]/Ip and Z[c_]/I . Z[an ]/I contains at most [m ] roots of m ; if a1/I is O P O p , p,cQ P>cq p not one of them then cQ + a is not p-primary and we have the decom­ position of section 4. kr 13. If Z[a0 ,c0]/Ip is a field, then cQ/Ip €. Z[aQ]/Ip , so that cp - cQ lies in I if k = Cm ] and r is any non-negative rational inte- P P» an ger. Assuming this to be the case, we wish to find r large enough so that cP € Z[a0].

We write cQ = d + e, with d in Z[aQ] and e in I . Then kr p „nkr kr P , / kr\ kr o „ °S . (d + e)p = 7 7 | PJ d p e . ta- s=0 ' /kr\ kr_s a The term dp already lies in Z[a03. The term I g j d e ,

l^s^sp1^, will lie in ZCSq ] if its p-star value is sufficiently large; if phVp”maX fie Z[aQ] then every element with p-star value at

least h is in ZCs q ], (In practice, we will always have an upper bound for p .) 49

It is not hard to show that v^(|pj.J) = kr - j , if p If w. Therefore v f p 1') £ ) + sv (e) •;<«•■> ■ •;

= kr - j + pJ/N kr a So, to ensure that cP lies in ZCaQ3, we need only take r large enough so chat this last expression exceeds h for all j ^ 0 . The

function g(t) = p V n - t is concave upward, so we need only to 9. examine g(x) for successive non-negative integral values of x until we observe g(x+1) ^g(x), in which case g(x) is the minimal value of

-j + P’V n for non-negative integral values of j . We then cl choose r so that kr - x + p /N ^ h . kr■ a If cp does not now lie in Z[an] then Z[a_ ,c_]/I is not a field; 0 0 0 U p in this case go to step 14. _ kr Otherwise set c = cP - cn C I • Then _ . k r ° . 0 _ V ac = 3Cq P - acQ = acQ P - n,RbQ _ kr is not in Z[aQ ], because a and cp are in Z[aQ ] while RbQ is not. We have * — « — # — * — * v (ac) > v (a) + v (c) > v (a) = v (bn ). P ^ P P p p o Therefore ac is an integral element lying outside of Z[aQ] with p-star value greater than that of b^. Replace bQ with ac and go to step 10. Because the integers outside Z[aQ] have bounded p-star value, this substitution can occur only finitely many times.

14. Systematically test elements of the form c^ + PC^q ) for p-primality; P € Z[t], [P] < [m ], the coefficients of P all rational integers P > 3q lying between 0 and p-1, inclusive. We saw above that only [m ] p,a0 such elements can be p-primary. Upon finding a non-p-pnmary ele­ ment, perform the corresponding algebraic decomposition as described in section 4. 50

This procedure terminates upon either

(i) the discovery of an Eisenstein element (which proves the order to be p-maximal), or (ii) the discovery of a non-p-primary element (which leads to a factorization of f mod qZ[t], which in turn leads to a decom­ position of the algebra; in step 12 we might also discover a factorization of f directly).

The procedure loops upon one of three conditions:

(iii) the discovery of an integral element b with [m . ] \ [m ] _ P,h p »ao (in which case we replace aQ with a, such that

(iv) the discovery of an jntegral element c with p-star value posi­ tive and less than v ta ) (in which case we modify aQ and a^ so that 0 < v (a0 ) ^ .c), or P 2 p (v) the construction of a (necessarily finite) sequence of integral elements, all lying outside ZCa^], with increasing p-star value.

Events (iii) and (iv) may occur only finitely often, because [nip a ] can not exceed n, and no element can have p-star value between 0 and 19n . a Event (v) leads in a finite number of steps to one of the other four conditions. CHAPTER XV

AN ALGEB IMPLEMENTATION OF THE ROUND FOUR ALGORITHM

JL. Ihs. MAXORD Routine

GLOBAL PROCEDURE MAXORD(F,P,QLIM,M,D); INTEGER P,QLIM,N,D; ARRAY F[1],M[2]; VALUE F;

EXTERNAL INTEGER PROCEDURE KDELTA; EXTERNAL PROCEDURE FACTOR; EXTERNAL PROCEDURE DECOMP; EXTERNAL PROCEDURE NILORD;

N := HIGHBD(1,F);

BEGIN INTEGER S; ARRAY ALPHA[0:N-1],G[1:2,0:N];

FOR S := 0,...,N-1 DO ALPHA[S] := KDELTA(S,1); FACTOR(F,P,G,S); IF S > 1 THEN DECOMP(F,P,QLIM,ALPHA,1,G,M,D) ELSE NILORD(F,P,QLIM,ROW(1,G),M,D) END END

Given the polynomial f with coefficients in the array F, the rational prime P, and QLIM a power of P sufficiently large so as not to divide the discriminant of f, MAXORD returns with a basis for the P-maximal extension order of V^, in AThe basis appears as a set of N poly­ nomials in u = t/f(t)Q[t], the coefficients of which are rational num­ bers with common denominator D, with the numerators appearing in rows 0 through N-1 of the array M. (N = [f].)

The array ALPHA contains the coefficients of u itself with respect to the Q-basis [1,u,...,u^-^] of A^,. The procedure FACTOR performs a partial factorization of f modulo P: If f is divisible by more than one irreducible polynomial modulo P then FACTOR sets S = 2 and returns two relatively prime factors of f (modulo P) in rows 1 and 2 of the array G, their product being congruent to f, modulo PZ[t]. If f is a power of an irreducible polynomial modulo P, then FACTOR sets S = 1 and returns with row 1 of G containing the unique irreducible factor of f modulo PZCt].

51 52

If f has more than one irreducible factor modulo P then we have seen in Chapter III that a factorization of f modulo QLIM and an algebraic de­ composition result. These operations are performed by the DECOMP rou­ tine. Otherwise ALPHA = u is P-primary; the P-primary case is handled by the NILORD routine.

2. Algebraic Decomposition — The DECOMP Routine

GLOBAL PROCEDURE DECOMP(F, P,QLIM,BETA,DENB,MPB, M, D); INTEGER N,P,QLIM,DENB,D; ARRAY F,BETA[1],MPB,M[2];

EXTERNAL INTEGER PROCEDURE GCD; EXTERNAL INTEGER PROCEDURE LCM; EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL INTEGER PROCEDURE KDELTA; EXTERNAL INTEGER PROCEDURE NQUOT; EXTERNAL INTEGER PROCEDURE INV; EXTERNAL PROCEDURE IDENT; EXTERNAL PROCEDURE LOWEST; EXTERNAL PROCEDURE ELTPRD; EXTERNAL PROCEDURE POLPRD; EXTERNAL PROCEDURE EVAL; EXTERNAL PROCEDURE REDUCE; EXTERNAL PROCEDURE MAXORD;

N := HIGHBD(1,F);

F, P, QLIM, M, and D are as described above. All elements of Vf = Q[u] are represented as polynomials in u with rational coefficients; for ex­ ample, u is represented by the vector (0,1,0,...,0). DECOMP is called in one of two situations: First, it may happen that b is a non-P-pri- mary element of Q[u] with coefficients having common denominor DENB, the numerators appearing in the vector BETA, and that the minimal polynomial of b over Q[u] has been factorized modulo PZ[t] into two proper rela­ tively prime factors, the coefficients of which appear in rows 1 and 2 of the array MPB. Second, it may happen that rows 1 and 2 of MPB con­ tain the coefficients of a proper factorization of f modulo QLIM*Z[t], in which case we will have b = u, so that BETA = (0,1,0,...,0) and DENB = 1. We found that we could save memory space, at the cost of some loss of execution time, if we treated these two cases identically. (As be­ fore , N = [ f ] .)

BEGIN INTEGER I,J,K,L,Q,R,PLIM,LAMBDA,MR,NK,DEK; ARRAY G,H,ZERO,ONE[0:N], ALPHA,EO,EK[0:N-1], MPF,A[1:2,0:N], E[1:2,0:N-1], DENE[1:2], M2[0:2*N-1,0:N-1], DENM2[N:2*N-1]; 53

PROCEDURE SETA(B); ARRAY B[2]; INTEGER N1,N2; ARRAY M[0:N-1,0:N]; N1 := DEG(ROW(1,B)); N2 := DEG(R0W(2,B)); FOR J := 0,...,N DO FOR I := 0,...,N-1 DO IF J = N THEN M[I,J] := KDELTA(I,0) ELSE IF J = 0 THEN M[I,J] := B[1,I] ELSE IF J = N2 THEN M[I,J] := B[2,I] ELSE IF I = 0 THEN M[I,J] := 0 ELSE M[I,J] := M[I-1,J-1]; REDUCE(M,N-1,N-1,PLIM); LAMBDA := 1; FOR I := 0,...,N-1 DO LAMBDA:= M [I,I]*LAMBDA; FOR I := 0,...,N-1 DO BEGIN K := LAMBDA / M[I,I]; ROW(I,M) := K*ROW(I,M); FOR J := 1+1,...,N-1 DO K := M[I,J] / M[J,J] ! REM ROW(I,M) := ROW(I,M) - K*ROW(J,M) / PLIM END; LOWEST(COLUMN(N,M).LAMBDA); A := 0*B; FOR I := 0,...,N2-1 DO A[1,I] := M[I,N]; FOR I := 0,...,N1-1 DO A[2,I] := M[N2+I,N]; REM A := A / LAMBDA*QLIM END;

SETA assumes that rows 1 and 2 of the array B contain the coefficients of two polynomials, say and g2 , with degrees N1 and N2, such that 0 < N1, N2 < N and N1 + N2 = N, and that QLIM does not divide the res­ ultant R(g1,g2) of g1 and g2> SETA finds two polynomials a^ and in Q[t] such that [a^] < N2 and [a2] < N1 and that a.^ + a ^ g l (mod QLIM*Z[t]). This SETA accomplishes by solving a system of linear equations, the coefficients of which form the resultant matrix of g^ and g2> The coefficients of a^ and a2 have common denominator LAMBDA, a power of P, and their numerators appear in rows 1 and 2 of the array A. The procedure REDUCE is explained in section 6 below.

FOR J := 0,...,N DO ZER0[J] := 0 ! 0NE[J] := KDELTA(J,0); FOR J := 0,...,N-1 DO ALPHAtJ] := KDELTA(J,1); PLIM := QLIM; WHILE P''3*PLIM<'2 <= QLIMA3 DO PLIM := P*PLIM; SETA(MPB); 54

ZERO and ONE contain the coefficients of the polynomials 0 and 1. ALPHA contains the coefficients of the element u = t/f(t)Q[t]. (Note that polynomials have coefficients numbered 0 through N, while elements of the algebra have coefficients numbered 0 through N-1.) If P is the highest power of P dividing the discriminant of f we set PLIM to be a 3h/2 power of P greater than P . PLIM is the modulus with respect to which the reduction in SETA is done. In the first case mentioned above, the polynomials in MPB are relatively prime modulo PZ[t] and we could afford to set PLIM = P. In the second case the denominator LAMBDA can not exceed p^/^3 so that the computed value of PLIM is a safe modulus to work with.

FOR K := 1,2 DO BEGIN POLPRD(ROW(K,A),ROW(K,MPB),H); EVAL(F,H,BETA,DENB,R0W(K,E),DENE[K]); DENE[K] := LAMBDA*DENE[K]; REM ROW(K,E) := ROW(K,E) / QLIM*DENE[K]; LOWEST(ROW(K,E),DENE[K]); ELOOP: EK := ROW(K,E); DEK := DENE[K]; EO := -2*EK; E0[0] := E0[0] + 3*DEK; ELTPRD(F,EK,DEK,EO,DEK,EO,L); ELTPRD(F,EK,DEK,EO,L,EO,L); REM ROW(K,E) := EO / L*QLIM; DENE[K] := L; IF L # DEK THEN GOTO ELOOP; FOR J := 0,...,N-1 DO IF E[K,J] # EK[J] MOD L*QLIM THEN GOTO ELOOP END; * 2 For k = 1, 2 we set ek = ak(b)g^(b)/LAMBDA, so that we have Vp(e^-e^), K X vP^e1e2^’ and vp^ei+e2" ^ a'L1 positive. We repeatedly replace e^ with 3e^ - 2e^ until no change is observed (modulo QLIM#Vp), by which time e^ and e^ are orthogonal idempotents modulo QLIM*V^..

FOR K := 1,2 DO BEGIN NK := DEG(R0W(3-K,MPB)); BEGIN ARRAY AK[0:N+NK,0:N+NK]; EK := ROW(K ,E); L := DENE[K]; FOR I := 0 .... N-1 DO FOR J := 0,...,N+NK DO AK[I,J] := L*QLIM*KDELTA(I,J); 55

FOR I := 0,...,NK DO BEGIN FOR J := 0,... ,N-1 DO AK[N+I,J] := EK[J]; FOR J := 0,...,NK DO AK[N+I,N+J] := KDELTA(I,J); ELTPRD ( F, EtC, 1, ALPHA, 1 , EK, Q) END; FOR I := N,...,N+NK DO FOR J := 0,...,N-1 DO WHILE AK[I,J] # 0 DO BEGIN IF AK[I,J] < 0 THEN ROW(I,AK) := - ROW(I,AK); IF AK[I,J] < AK[J,J] THEN ROW(I,AK) :=: ROW(J,AK); Q := NQUOT(AK[I,J],AK[J,J]); REM ROW(I,AK) := ROW(I.AK) - Q*ROW(J,AK) / L*QLIM END; R := INV(AK[N+NK,N+NK],QLIM); FOR J := 0,...,NK DO REM MPF[K,J] := R#AK[N+NK,N+J] / QLIM; FOR J := NK+1,...,N DO MPF[K,J] := 0 END END;

The numerators of the coefficients of ek appear in EK, and have common denominator L. NK is the dimension of e^V^/QLIM*^, which is given by the degree of the opposite (3-kth) factor in MPB. We have

Z[u]/QLIM*Z[u] = e.|Z[u]/QLIM*Z[u] + e2Z[u]/QLIM*Z[u] , the sum being direct. We seek h^, in Z[t] so that

e.jh.|(u) S e2h2 (u) S O (mod QLIM*Z[u])

It would then follow that

h1(u)h2(u) S e^h1 (u)h2(u) + (u)h2(u)

S O S f ( u ) (mod QLIM*Z[u]) , so that

f S h1h2 (mod QLIM*Z[t]) .

We get h. as the minimal polynomial of e u in Z[u]/QLIM*Z[u]; in k k other v;ords, h is the smallest dependence relation on the set 56

NfC {L#e ,L*e u,...,L*e u } over QLIM#Z[u]. This we find by forming K K K the (N+NK+1) x (N+NK+1) matrix

(L*QLIM)*ID /■ NxN Nx(NK+1)

L*e. L*e, u k ID (NK+1)x(NK+1)

NK L*e u k and row-reducing. For our purposes, the entries in columns N+1 through N+NK need only be kept modulo QLIM. After the reduction, the coeffici­ ents of h. appear as entries N through N+NK of the last row of the matrix. We store the coefficients of h^ in row k of the array MPF.

SETA(MPF); IDENT(M2); D := 1; MR := N; FOR K := 1,2 DO BEGIN NK := DEG(ROW(K,MPF)); BEGIN INTEGER DK; ARRAY FK[0:NK], MK[0:NK-1,0:NK-1]; FOR I := 0,...,NK DO FK[I] := MPF[K,I]; MAXORD(FK,P,QLIM,MK,DK); P0LPRD(R0W(3-K,A),ROW(3-K,MPF),G); FOR I := 0,...,N-1 DO REM EK[I] := G[I] / LAMBDA*DK; FOR I := 0,...,NK-1 DO BEGIN FOR J := 0,...,NK-1 DO E0[J] := MK[I,J]; FOR J := NK,...,N-1 DO E0[J] := 0; ELT PR D(F,EK,LAMBDA,EO,DK, ROW(MR,M2),DENM2[MR]); MR := MR + 1 END END END; FOR I : = N,. . ,2*N-■1 DO D := LCM(D,DENM2[I]); FOR I : = 0 ,. . ,N-1 DO M2[I,I] := D; FOR I : = N, . .,2*N--1 DO K := D/DENM2[I] ! R0W(I,M2) K*ROW(I,M2); REDUCE(M2,2*N-1,N-1,0); FOR I := 0,... ,N-1 DO ROW(I,M) := R0W(I,M2) END END 57

SETA determines a^, and LAMBDA such that

(a1 /LAMBDA)f1 + (ag/LAMBDA)fg g l (mod QLIM) .

MAXORD gives a basis for Vf , for k = 1, 2. With u a root of f — k — f^fg» we set = a3 /LAMBDA; e^ is an approximation to the p-adic idemoptent e^. We saw in the previous chapter that

,rP.-max — P-max ~ ,.£-max ,.P-max P-max Vf = e 1 f + e2f = Vf2 * Vf2 The isomorphism „P-max v£-max Vf,k — Vf is given by

g(u > <— > ek(u)g(u) I with g a rational polynomial and u^ a root of f^. We thus convert the Z-basis of v^”max to a partial Z-basis for v^-max, and use the k REDUCE routine to convert the basis to triangular form. We saw in chap- P-max ter III that any basis for V'p expressed as polynomials in u gives a basis for v£-max when expressed in terms of u.

JL. Ih£ p-primary Case — The NILORD Routine

GLOBAL PROCEDURE NILORD(F,P,QLIM,FP,M,D); INTEGER N,P,QLIM,D; ARRAY F,FP[1],M[2];

EXTERNAL INTEGER PROCEDURE GCD; EXTERNAL INTEGER PROCEDURE LCM; EXTERNAL INTEGER PROCEDURE NQUOT; EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL INTEGER PROCEDURE PPART; EXTERNAL PROCEDURE IDENT; EXTERNAL PROCEDURE LOWEST; EXTERNAL PROCEDURE MINPOL EXTERNAL PROCEDURE FACTOR EXTERNAL PROCEDURE EXTGCD EXTERNAL PROCEDURE POLPRD EXTERNAL PROCEDURE POLDIV EXTERNAL PROCEDURE POLGCD EXTERNAL PROCEDURE DIVMOD EXTERNAL PROCEDURE GCDMOD 58

EXTERNAL PROCEDURE EXPAND; EXTERNAL PROCEDURE ELTSUM; EXTERNAL PROCEDURE ELTPRD; EXTERNAL PROCEDURE ELTINV; EXTERNAL PROCEDURE EVAL; EXTERNAL PROCEDURE REDUCE; EXTERNAL PROCEDURE DECOMP;

N := HIGHBD(1,F);

BEGIN INTEGER DZ; ARRAY ZETA[0:N-1], GMOD[1:2,0:N];

These are the only variables that need to be preserved during recursion; to save space we declare all the others inside a sub-block.

BEGIN INTEGER I,J,K,L,V,Q,R,DTH, A, B, C, T, LAMBDAA,LAMBDAB,LAMBDAC, MUA,MUB,MUC,NUA,PI,ZACOEF, DTHBAR,DENABAR; BOOLEAN BREAK,NEWA,FIRST; ARRAY ONE,X,THETA,THBAR,ABAR[0:N-1], ALPHA,BETA,GAMMA[0:2,0:N-1], DENA,DENB,DENC[0:2], G ,H,MIN A,MINPA,MINB,MINPB,MINC,MINPC, MINTH,MINTHB,MPH1,MINABAR,MINZ[0:N], M2[0:2*N-1,0:N-1], D2[0:2*N-1];

F, P, QLIM, M, D and N are as section 2 above. NILORD assumes that F is congruent modulo PZ[t] to a power of the polynomial FP, i.e., that u is D _ m a X P-primary. NILORD produces a Z-basis for Vf in M and D in the form indicated in section 1. The elements aQ , a^ and a2 are stored in rows 0, 1 and 2 of the array ALPHA, with denominators DENA[0], DENA[1] and DENA[2], respectively. The elements bQ , b^ and b2 and the elements

Cq , c ^ and c2 are stored similarly in the arrays BETA and GAMMA, with denominators in the arrays DENB and DENC. Generally, if x is an element of the algebra A_, we represent x by its (rational) coefficients with respect to the Q-basis {1,u,...,u } as the vector X, containing the numerators of the coefficients of x, together with their common denomi­ nator XD, and we say x = X/DX. 59

PROCEDURE ELTPOW(A,DA,E,B,DB,Q); INTEGER DA,DB,E,Q,R; ARRAY A,B[1]; VALUE A,DA,£; B := 0*A; B[0] := 1; DB := 1; WHILE E # 0 DO BEGIN E REM R := E / 2; IF R # 0 THEN ELTPRD(F,B,DB,A,DA,B,DB) ! REM B := B / Q*DB; IF E # 0 THEN ELTPRD(F,A,DA,A,DA,A,DA) ! REM A := A / Q*DA END END;

ELTPOW assumes that A/DA is an element of Vf, and produces the element B/DB, equal to (A/DA)E reduced modulo QZTul.

PROCEDURE BRCHECK(PHI,DPH,MINPH); INTEGER DPH; ARRAY PHI,MINPH[1]; FACTOR(MINPH,P,GMOD,K); BREAK := K > 1; IF BREAK THEN ZETA := PHI ! DZ := DPH ! MINZ := MINPH END;

BRCHECK assumes that MINPH is congruent modulo PZ[t] to the minimal polynomial of the element PHI/DPH. BREAK is TRUE if and only if this element is not P-primary (allowing a decomposition), in which case PHI, DPH and MINPH are copied into ZETA, DZ and MINZ, and a partial factorization of MINPH modulo P is in GMOD.

PROCEDURE SETUP(THETA,DTH,MINTH); INTEGER DTH; ARRAY THETA,MINTH[1]; MINPOL(F,P,1,QLIM,THETA,DTH,MINTH); BRCHECK(THETA,DTH,MINTH); IF NOT BREAK THEN BEGIN NEWA := NOT DEG(ROW(1,GMOD)) DIVIDES DEG(MINPA); IF NEWA THEN ELTSUM(ROW(0,ALPHA),DENA[0],THETA,DTH,THBAR,DTHBAR) ! MINPOL(F,P,1,QLIM,THBAR,DTHBAR,MINTHB); END END;

SETUP calls MINPOL to put the minimal polynomial (mod PZ[t]) of the ele­ ment THETA/DTH into MINTH. SETUP calls BRCHECK to determine whether THETA/DTH is P-primary. If so, and if the degree of the irreducible factor (mod PZ[t]) of MINTH does not divide the degree of mD , NEWA P ’a0 60 is set TRUE, THBAR/DTHBAR is set to THETA/DTH + aQ , and MINTHB is set equal to the minimal polynomial of THBAR/DTHBAR (mod PZ[t]).

PROCEDURE NILPART(MF,MFP,PHI,DENPH,LAMBDA,MU); INTEGER LAMBDA,MU,R,S; ARRAY MF,MFP,DENPH[1],PHI[2]; EVAL(F,MFP,R0W(0,PHI),DENPH[0],R0W(1,PHI),DENPH[1]); R := 2*N+1; NLOOP: MINPOL(F,P,R,QLIM,ROW(1,PHI)tDENPH[1],MPH1); VSTAR(MPH1,LAMBDA,MU); IF MU = 0 THEN R := 2*R ! GOTO NLOOP; S := DEG(MPH1)«LAMBDA/MU; IF R <= S THEN R := S + 1 ! GOTO NLOOP; IF LAMBDA = 1 THEN R0W(2,PHI) := R0W(1,PHI) ! DENPH[2] := DENPH[1] ELSE BEGIN EXTGCD(LAMBDA,MU,A,B); WHILE A <= 0 DO A := A + MU ! B := B - LAMBDA; ELTPOW(ROW(1,PHI),DENPH[1],A , R0W(2 ,PHI) ,DENPH[2] ,P~(2-B)); DENPH[2] := P<‘-B*DENPH[2]; LOWEST(ROW(2,PHI),DENPH[2]) END END;

NILPART assumes that PHI is one of the arrays ALPHA, BETA or GAMMA, and that DENPH is one of DENA, DENB or DENC, so that the rows of PHI are to contain, say, Xg, x^ and x^. Xg is assumed to be P-primary, with MF = m^ and MFP = mp x • NILPART computes x^ and x,,, and sets LAMBDA/&U = v*(x.,). °

PROCEDURE VSTAR(H,A,B); INTEGER A,B; ARRAY H[1]; K := DEG(H); A := 1; B := 0; FOR I := 1,...,K DO IF H[K-I] # 0 THEN BEGIN L := H[K-I]; V := 0; WHILE P DIVIDES L DO L := L/P ! V := V + 1; IF V*B < I*A THEN A := V ! B := I END; K := GCD(A,B); A := A / K; B := B / K END; 61

VSTAR assumes that H is the minimal polynomial of the element x, and ft sets A/B = Vp(x).

PROCEDURE NEWMU(PHI,DENPH,MUPH); INTEGER MUPH,D1,D2; ARRAY PHI[2],DENPH[1]; ARRAY G1,G2[0:N-1]; EXTGCD(MUA,MUPH,A,B); C := 0; WHILE A < 0 DO A := A + MUPH ! C := C + 1; WHILE B < 0 DO B := B + MUA ! C :=C+ 1; ELTP0W(R0W(2,PHI),DENPH[2],A,G1,D1,P~(C+1)); ELTP0W(R0W(2,ALPHA),DENA[2],B,G2,D2,P^C+I)); ELTPRD(F,G1,D1,G2,D2,G1,D1); ELTSUM(ROW(0,ALPHA) ,DENA[0] ,G1 ,P''C*D1 ,ABAR,DENABAR) END;

NEWMU assumes that the element x = ROW(2,PHI)/DENPH[2] has P-star value 1/MUPH and that MUPH I MUA, where Vp(a,,) = 1/MUA. NEWMU creates the element y = ABAR/DENABAR with v*(mp y (y)) = 1/LCM(MUA,MUPH) < 1/MUA.

PROCEDURE MBASIS(A); ARRAY A[2]; R0W(0,A) := ONE; D2[0] := 1; FOR I := 1,. ..,N-1 DO ELTPRD(F,R0W(0,ALPHA),DENA[0],R0W(I-1,A), D2[I—1],R0W(I,A),D2[I]); NORMALIZE(A,D2,N) END;

MBASIS produces a Z-basis for Z[aQ] in the rows of the array A with de­ nominators in the column vector D2. The NORMALIZE routine puts this basis in upper triangular form.

PROCEDURE NORMALIZED,DA,R); INTEGER R; ARRAY A[2], DAC1]; L := 1; FOR I := 0,...,R-1 DO L := LCM(L,DA[I]); FOR I := 0,...,R-1 DO K := L / DA[I] ! DA[I] := L ! ROW{I ,A) := K*R0W(I,A); REDUCE(A,R-1,N-1,0) END;

NORMALIZE assumes that rows 0 through R-1 of the array A contain the coefficients of a set of elements in Q[u], with denominators in the column vector DA, and that this set has rank N over Q. NORMALIZE gives these elements a common denominator L, then reduces the set to a linear­ ly independent set in upper triangular form. 62

The NILORD procedure proper begins here. One should refer to the notes in section 5 of Chapter III to understand fully what is going on.

IDENT(M); D := 1; DIVMOD(F,FP,G, P); POLPRD(FP,G,MINA); H := F - MINA / P; GCDMOD(G,H,MINA,P); IF DEG(MINA) = 0 THEN GOTO MAXIML;

We apply the Dedekind Criterion to decide if Vp is already P-maximal. If so we return at once, with M the identity matrix and D = 1.

ONE := R0W(0,M); X := R0W(1,M); R0W(0,ALPHA) := X; DENA[0] := 1; MINA := F; MINPA := FP; PM0J3: MUA := N / DEG(MINPA); IF NUA = 1 THEN MBASIS(M) ! D := D2[0] ! GOTO MAXIML;

If m = m_. then m is irreducible modulo PZ[t] so Z[a_] is a0 ,ao ao 0 P-maximal by the Berwick Criterion, and we return with M/D contain­ ing a basis for ZEs q ],

IF MINPA[0] = 0 THEN ALPHA[0,0] := ALPHA[0,0] + DENA[0] ! L0WEST(R0W(0.ALPHA),DENA[0]) ! MINPA[0] := MINPAEO] - 1 ! MINPOL(F,P,1,QLIM,ROW(0,ALPHA),DENA[0],MINA); * If mp (t) = t then vD(a_) 4 0, so we replace a_ with an+1. j 3q t U U U NILPART(MINA,MINPA,ALPHA,DENA,LAMBDAA,MUA);

LAMBDAA/MUA = v * ^ ) .

IF MUA = NUA THEN BEGIN IDENT(M2); FOR I := 0 .... N-1 DO D2[I] := 1; FOR V := 0,2 DO BEGIN T := 1; WHILE T < N DO BEGIN REM R0W(V,ALPHA) := R0W(V,ALPHA) / DENA[V]; FOR I := 0,. ..,N-1 DO ELTPRD(F,ROW(V,ALPHA),DENA[V],ROW(I,M2), D2[I],R0W(N+I,M2),D2[N+I]); 63

N0RMALIZE{M2,D2,2*N); ELTPRD(F,ROW(V,ALPHA),DENA[V], ROW(V,ALPHA), DENA[V],ROW(V ,ALPHA),DENA[V]); T := 2#T END END; FOR I := 0,...,N—1 DO ROW(I,M) :=: ROW(I,M2); D :=: D2[0]; GOTO MAXIML END;

NUA = N/[mD ], and 1/MUA = v*(a_). If MUA = NUA, then Z[an ,a0] con- L ) 3 q i U c tains an Eisenstein element and is therefore P-maximal. In this case we set M/D equal to a Z-basis for Z[aQ ,a2 ] and return.

IF LAMBDAA = 1 THEN GOTO PM0J9;

ELTSUM(ROW(0,A LPHA),DENA[0],ROW(2,ALPHA),DENA[2], ABAR,DENABAR); PM0J6: REM ABAR := ABAR / P#DENABAR; SETUP(ABAR,DENABAR,MINABAR); COMMENT— SETUP PUTS THE FACTORS MOD P INTO GMOD; IF BREAK THEN GOTO ALGDEC; IF NOT NEWA THEN THBAR := ABAR ! DTHBAR := DENABAR ! MINTHB := MINABAR;

At PMOJ6, ABAR/DENABAR is an element of Q[u] that will replace a^.

PMOJ6A: WHILE DEG(MINTHB) < N DO ELTSUM(THBAR.DTHBAR,P*R0W(0.ALPHA),DENA[0], THBAR,DTHBAR) ! MINPOL(F,P,1,QLIM,THBAR,DTHBAR,MINTHB); BRCHECK(THBAR,DTHBAR,MINTHB); IF BREAK THEN GOTO ALGDEC; R0W(0,ALPHA) :=: THBAR; DENA[0] :=: DTHBAR; MINA :=: MINTHB; MINPA :=: ROW(1,GMOD); GOTO PMOJ3;

THBAR/DTHBAR, adjusted to have minimal polynomial of degree N, replaces a^.

PMOJ9: MBASIS(M2); K := 1; FOR I := 0,...,N-1 DO K := M2[I,I]*K; ZACOEF := K / GCD(K,D2[0]);

ZACOEF#Z[aQ] ^Z[u]. 64

ELTPOW(ROW(1,ALPHA),DENA[1],MUA,ROW(0,BETA),DENB[0],P* ZACOEF); DENB[0] := P*DENB[0]; LOWEST(ROW(0,BETA),DENB[0]); FIRST := TRUE; PMOJ10: SETUP(ROW(0,BETA),DENB[0],MINB); IF BREAK THEN GOTO ALGDEC; IF NEWA THEN GOTO PM0J6A; MINPB := ROW(1,GMOD); NILPART(MINB,MINPB,BETA,DENB,LAMBDAB,MUB); IF NOT MUB DIVIDES MUA THEN NEWMU(BETA,DENB,MUB) ! GOTO PM0J6; IF FIRST THEN LAMBDAB := 0;

LAMBDAB/MUB = v*(bQ).

PM0J12: PI := LAMBDAB*MUA / MUB; ELTP0W(R0W(1,ALPHA),DENA[1],PI,ABAR,DENABAR,P"2); REM ABAR : = ABAR / P*P*DENABAR; FOR I := 0,...,N-1 DO H[I] := ABAR[I]; H[N] := 0; POLGCD(F,H,G); COMMENT— ASSUMES GCD IS MONIC; IF DEG(G) > 0 THEN R0W(1,GM0D) := G ! POLDIV(F,G,ROW(2,GMOD)) ! ZETA := X ! DZ := 1 ! GOTO ALGDEC;

We jump to ALGDEC if ABAR/DENABAR is a zero divisor, in which case G is a proper factor of the polynomial F.

ELTINV(F,ABAR,DENABAR,ROW(2,GAMMA),DENC[2]); DENC[2] := PPART(DENC[2],P); ELTPRD(F,ROW(0,BETA),DENB[0],ROW(2,GAMMA),DENC[2], R0W(0,GAMMA),DENC[0]); REM R0W(0,GAMMA) := R0W(0,GAMMA) / P*DENC[0]; SETUP(ROW(0,GAMMA),DEN C[0],MINC); IF BREAK THEN GOTO ALGDEC; IF NEWA THEN GOTO PM0J6A; MINPC := ROW(1,GMOD); NILPART(MINC,MINPC,GAMMA,DENC,LAMBDAC,MUC); IF NOT MUC DIVIDES MUA THEN NEWMU(GAMMA,DENC,MUC) ! GOTO PM0J6;

MINPC = mp and MINPA = mp . At PM0J13 we know that [MINPC] divides [MIn Pa ]. 0 65

PM0J13: V := 0; L := P"3; WHILE L DIVIDES QLIM*D2[0]~2 DO L := P~2#L ! V := V + 1; A := NUA*V - 1; B := A; K := 0; WHILE B >= A DO A := B ! K := K + 1 ! B := NUA*(K + V) - P*K; T := A + NUA - 1 / NUA; Q := P“(DEG(MINPC)*T); ELTP0W(R0W(0,GAMMA),DENC[0],Q,ROW(1,GAMMA),DENC[1],P*ZACOEF); Q REM R := D2[0] / DENC[1]; IF R # 0 THEN GOTO PM0J14; R0W(2,GAMMA) := Q*ROW(1.GAMMA); FOR J := 0,...,N-1 DO BEGIN Q REM R := GAMMA[2,J] / M2[J,J]; IF R # 0 THEN GOTO PM0J14; R0W(2,GAMMA) := R0W(2,GAMMA) - Q«R0W(J,M2) END;

We jump to MPOJ14 if Z[ag,Cg]/Ip is not a field.

ELTSUM(ROW(1,GAMMA),DENC[1],-ROW(0,GAMMA),DENC[0], R0W(2,GAMMA),DENC[2]); ELT PRD(F,ROW(2,GAMMA),DEN C[2],ABAR,DENABAR, ROW(0,BETA),DENB[0]); FIRST := FALSE; GOTO PMOJ10;

We have replaced bQ with an integral element with larger P-star value that still lies outside Z[aQ]. We repeat the algorithm from step 10.

PMOJ14: K := DEG(MINPA); T := 0; G := 0*F; PM0J15: T := T + 1; L := T; FOR J := 1,...,K DO L REM G[J] := L / P; EVAL(F,G,R0W(0,ALPHA),DENA[0],R0W(1,GAMMA),DENC[1D); ELTSUM(ROW(0,GAMMA),DENC[0],ROW(1,GAMMA),DENC[1], R0W(2,GAMMA),DENC[2]); SETUP(R0W(2,GAMMA),DENC[2],H); IF BREAK THEN GOTO ALGDEC; IF NEWA THEN GOTO PMOJ6A; GOTO PMOJ15;

Here we test elements of the form Cq + y for P-primality, with y in Z[aQ ]. Since Z[a0>c0]/Ip is not a field we will find a non-P-primary element in at most [mD ] attempts, yielding a decomposition of the *»a0 algebra. 66

ALGDEC: WHILE DEG(MINZ) # N DO ELTSUM(ZETA,DZ,P#ROW(0,ALPHA), DEN A [ 0 ] , Z ETA, DZ) ! MINPOL(F,P,1,QLIM,ZETA,DZ,MINZ) ! EXPAND(MINZ,GMOD,P) END; DECOMP(F,P,QLIM,ZETA,DZ,GMOD,M,D);

At ALGDEC we know that the element x = ZETA/DZ is non-P-primary and that rows 1 and 2 of GMOD contain a partial factorization of modulo PZ[t], If necessary vie modify x to ensure than traxl = N, then, to save memory space we leave the subblock in which most of the local variables were P—rnsv declared. DECOMP puts a Z-basis for V,., in M/D. r MAXIML: END END

At MAXIMAL we leave the NILORD procedure with a Z-basis for V„ in M/D. k . Polynomial Factorization modulo — The Berlekamp Algorithm

The procedure FACTOR factorizes a polynomial modulo pZ[t] by means of the Berlekamp algorithm. In this implementation we have closely fol­ lowed Knuth C73, except that, if the original polynomial is divisible by more than one irreducible factor modulo pZ[t], FACTOR only returns a factorization into two relatively prime (K"t possibly reducible) fac­ tors.

GLOBAL PROCEDURE FACTOR(F,P,G,RANK); INTEGER P,N,RANK; ARRAY F[1],G[2];

EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL INTEGER PROCEDURE INV; EXTERNAL PROCEDURE IDENT; EXTERNAL PROCEDURE SEPPRT; EXTERNAL PROCEDURE GCDMOD; EXTERNAL PROCEDURE EXPAND;

N := HIGHBD(1,F);

FACTOR assumes that F is a polynomial and that G is a matrix with two rows. FACTOR will return the number of irreducible factors of F modulo PZ[t} in RANK, and the two rows of G will contain a partial factoriza­ tion of F modulo PZCt]. 67

BEGIN INTEGER NO; ARRAY F0,H,W[0:N]; SEPPRT(F,P,FO); NO := DEG(FO);

The Procedure SEPPRT removes repeated factors from F and returns the re­ sult in FO. We now perform the Berlekamp algorithm on FO, which is the product of the distinct irreducible factors of F modulo PZ[t].

BEGIN INTEGER I,J,R,C,S,T,L; ARRAY M,BQ,ID,CM[0:N0-1,0:N0-1];

IDENT(ID); FOR J := 0,...,N0-2 DO COLUMN(J,CM) := COLUMN(J+1,ID); FOR I := 0,...,N0-1 DO CM[I,N0-1] := —FO[I]; M := ID; S := P; WHILE S # 0 DO BEGIN S REM T := S / 2; IF T # 0 THEN REM M := M*CM / P; IF S # 0 THEN REM CM := CM*CM / P END; COLUMN(0,BQ) := COLUMN(0,ID); FOR L := 1,...,NO-1 DO REM COLUMN(L,BQ) := M*COLUMN(L-1,BQ) / P; REM BQ :s BQ - ID / P; RANK := NO; FOR C := 1,...,N0-1 DO BEGIN R := 0; WHILE BQ[C,C] = 0 AND R < NO DO IF BQ[R,C] # 0 AND (BQ[R,R] = 0 OR R > C) THEN R0W(R,BQ) :=: ROW(C.BQ) ELSE R := R + 1; IF BQ[C,C] # 0 THEN BEGIN RANK := RANK - 1; REM R0W(C,BQ) := INV(BQ[C,C],P)*R0W(C,BQ) / P; FOR R := 0,...,N0-1 DO IF R # C AND BQ[R,C] # 0 THEN REM ROW(R ,BQ) := R0W(R,BQ) - BQ[R,C]*ROW(C,BQ) / P END END;

The matrix BQ is Berlekamp's Q-matrix. The rank of BQ over the field with P elements gives the number of irreducible factors of FO. 68

IF RANK = 1 THEN ROW(1,G) := FO ELSE BEGIN REM BQ := ID - BQ / P; FOR C := 1,...,NO-1 DO IF BQ[C,C] # 0 THEN BEGIN FOR I := 0,...,N0-1 DO W[I] := BQ[I,C]; FOR I := NO,...,N DO W[I] := 0; FOR S := 0,...,P-2 DO BEGIN GCDMOD(W,FO,H,P) ; IF 0 < DEG(H) < DEG(FO) THEN ROW(1,G) := H ! EXPAND(F,G,P) ! GOTO FACRTN; REM W[0] := W[0] + 1 / P END END END; FACRTN: END END

END

If RANK = 1 then F is a power of a single irreducible polynomial modulo PZ[t] (so that any root of F is P-primary) and FACTOR returns the sin­ gle irreducible factor in row 1 of G. In this case, row 2 of G has no significance. Otherwise, the EXPAND routine puts a factorization of F into two proper relatively prime factors into rows 1 and 2 of G.

We include in this section three proceduresthat play an important in the FACTOR procedure.

GLOBAL PROCEDURE SEPPRT(F,P,FO); INTEGER P,N; ARRAY F,F0[1];

EXTERNAL INTEGER PROCEDURE GCD; EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL PROCEDURE POLPRD; EXTERNAL PROCEDURE DIVMOD; EXTERNAL PROCEDURE GCDMOD;

N := HIGHBD(1,F); 69

BEGIN INTEGER I ,K,L,S; ARRAY FHAT,F1,FSEP,G,H[0:N];

FO := 0*F; F0[0] := 1; FHAT := F; WHILE DEG(FHAT) > 0 DO BEGIN K := 0; L := 1; FOR I := 1,...,N DO IF FHAT[I] # 0 MOD P THEM K := GCD(K,I); WHILE K = 0 MOD P DO K := K/P ! L := L*P; S := DEG(FHAT)/L; G := 0*F; FOR I := 0,...,S DO G[I] := FHAT[L*I]; FHAT :=: G; F1[N] := 0; FOR I := 1,...,N DO FI[1-1] := I*FHAT[I]; GCDMOD(FHAT,F1,G,P); DIVMOD(FHAT,G,FSEP, P); GCDMOD(FO,FSEP, H, P); DIVMOD(FSEP,H,FSEP,P); POLPRD(FO,FSEP,FO); FHAT :=: G END END

END

SEPPRT assumes that F and P are as describedabove. SEPPRT removes all repeated factors modulo PZ[t] from F and returns the coefficients of the result in the vector FO. That is to say, SEPPRT sets FO to be the pro­ duct of all the distinct irreducible factors of F modulo PZ[t],

GLOBAL PROCEDURE GCDMOD(A,B,C,P); VALUE A ,B; ARRAY A,B,C[1]; INTEGER I,JjP jQ jR jS;

EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL INTEGER PROCEDURE INV;

REM A := A/P; R := DEG(A); REM B := B/P; S := DEG(B); WHILE B[S] # 0 DO BEGIN IF B[S] # 1 THEN REM B := INV(B[S],P)*B / P; 70

FOR J := R-S, R-S-1,..., 0 DO IF A[S+J] # 0 THEN BEGIN Q := AtS+J]; FOR I : = 0 ,. .. , S DO REM A[I+J] := A[I+J] - Q*B[I] / P END; A :=: B; R :=: S; S := DEG(B) END; IF A[R] # 1 THEN REM A := INV(A[R],P)«A / P; C : = : A END

GCDMOD assumes that A and B are polynomials with coefficients from the field with P elements. GCDMOD returns their (monic) greatest common divisor in C.

GLOBAL PROCEDURE EXPAND(F,G,P); INTEGER N,P; ARRAY F[1],G[2];

EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL PROCEDURE POLPRD; EXTERNAL PROCEDURE DIVMOD; EXTERNAL PROCEDURE GCDMOD;

N := HIGHBD(1,F);

BEGIN ARRAY HO,H1,H2[0:N];

HO := ROW(1,G ); H1 := 0*F; HI[0] := 1; H2 := F; WHILE DEG(HO) > 0 DO POLPRD(H1,H0,H1) ! REM H1 := H1 / P ! DIVMOD(H2,HO,H2,P) ! GCDMOD(HI,H2,H0,P); R0W(1,G) : = : HI; R0W(2,G) :=: H2

END END

EXPAND assumes that the first row of G is a polynomial that divides the polynomial F modulo PZ[t]. EXPAND returns with rows 1 and 2 of G con­ taining a factorization of F into two relatively prime factors modulo PZ[t], the first of which is the product of all the factors of F that were also factors of the original first row of G, the second of which is the product of the remaining factors of F. 71

Hi. MlflPQL — Ihe Minimal Polynomial Routine

GLOBAL PROCEDURE MINPOL(F,P,E,QLIM,THETA,DTH, G); INTEGER N,P,E,QLIM,DTH; ARRAY F,THETA,G[1];

EXTERNAL INTEGER PROCEDURE NQUOT; EXTERNAL INTEGER PROCEDURE KDELTA; EXTERNAL PROCEDURE ELTPRD;

N := HIGHBDO ,F);

F, P, QLIM and N are as above. MINPOL assumes that x = THETA/DTH is an p—max element of . MINPOL returns the coefficients of the minimal E polynomial of x, reduced modulo P , in the vector G. (Were the coef­ ficients not reduced this computation would produce truly enormous integers. It was frequently in the MINPOL routine that the original version of the Round Four program failed for lack of memory space. For­ tunately we never need to know the minimal polynomial exactly; it always suffices to have the coefficients correct modulo a power of P.)

BEGIN INTEGER I,J,K,Q,R,C,PPOW; ARRAY A[0:N,0:2#N], PHI[0:N-1];

PHI[0] := P; PPOW := P~E; K := 0; WHILE P'3*PHI[0]''2 <= QLIM DO PHI[0] := P*PHI[0]; 2 We determine s, a power of P, such that Ps K d(F), which ensures that sVp maxCz[u], We will determine a dependence relation on the set {s,sx,...,sxN~^}; since x lies in v^“max this set is contained r in Z[u], We begin with PHI = s. Each time through LOOP we replace PHI with PHI*x.

FOR J := 1,...,N-1 DO PHI[J] := 0; LOOP: FOR J := 0,...,N-1 DO A[K,J] := PHI[J]; FOR J := 0,...,N DO A[K,N+J] := KDELTA(K,J); R := 0; FOR C := 0,...,N-1 DO IF R < K THEN BEGIN WHILE A[K,C] # 0 DO BEGIN IF A[R,C] = 0 OR ABS(A[K,C]) < ABS(A[R,C]) THEN R0W(R,A) :=: R0W(K,A); IF A[R,C] < 0 THEN R0W(R,A) := - R0W(R,A); IF A[K,C] # 0 THEN BEGIN Q := NQUOT(A[K,C],A[R,C]); ROW(K,A) := ROW(K,A) - Q#ROW(R,A); FOR J := N,...,2«N DO REM A[K,J] := A[K,J] / PPOW END END; IF A[R,C] # 0 THEN R := R + 1 END ELSE IF A[K,C] # 0 THEN ELTPRD(F,THETA,DTH,PHI,1,PHI,Q) ! K := K + 1 ! GOTO LOOP; FOR J := 0 ..... N DO G[J] := A[K,N+J]

END END

6. REDUCE — Hermitian Row-Reduction

GLOBAL PROCEDURE REDUCE(A,RL1M,CLIM,Q); INTEGER C,L,I,J,K,Q,RLIM,CLIM; ARRAY A [2] ;

EXTERNAL INTEGER PROCEDURE NQUOT; EXTERNAL INTEGER PROCEDURE INV;

PROCEDURE NORMALIZE; K := NQUOT(A[I,C],A[C,C]); ROW (I, Pi) := ROW (I, A) - K*ROW(C,A); IF Q # 0 THEN REM ROW(I,A) := ROW(I,A) / Q END;

FOR C := 0,...,CLIM DO BEGIN IF Q # 0 THEN FOR I := C,...,RLIM DO IF A[I,C] # 0 THEN K := INV(A[I,C],Q) ! REM ROW(I ,A) := K*ROW(I,A) / Q; RLOOP: L := C; WHILE A[L,C] = 0 DO L := L + 1; FOR I := L+1,...,RLIM DO IF 0 < ABS(A[I,C]) < ABS(A[L,C]) THEN L ;= I; IF L # C THEN ROW(C,A) :=: ROW(L,A); IF A[C,C] < 0 THEN ROW(C,A) := - ROW(C,A); FOR I := C+1,...,RLIM DO IF A[I,C] # 0 THEN NORMALIZE; 73

FOR I := C+1,..., RLIM DO IF A[I,C] # 0 THEN GOTO RLOOP; FOR I := 0,...,C-1 DO IF A[I,C] # 0 THEN NORMALIZE; END END

REDUCE assumes that the matrix consisting of rows 0 through RLIM of col­ umns 0 through CLIM has rank CLIM+1. REDUCE transforms A into upper triangular form in columns 0 through CLIM via unimodular (i.e., invert­ ible) row operations. If Q = 0 the reduction is performed over Z so that the diagonal elements are all positive and the elements above the diagonal are no larger than half the diagonal element in absolute value. If Q i 0 the entries of A are reduced modulo Q, the diagonal elements are all positive divisors of Q, and the elements above the diagonal are again no larger than half the diagonal element in absolute value.

7. Polynomial Manipulation Routines

GLOBAL PROCEDURE P0LPRD(A,B,C); VALUE A,B; ARRAY A,B,C[1]; INTEGER K,J,N; N := HIGHBD(1,C); C := 0*A; FOR K := 0,...,N DO FOR J := 0,...,K DO C[K] := C[K] + A[J]*B[K-J] END

POLPRD assumes that the vectors A and B contain the coefficients of two polynomials and that the degree of their product does not exceed N. POLPRD puts the coeficients of the product in the vector C.

GLOBAL PROCEDURE P0LDIV(A,B,C); VALUE A,B; ARRAY A,B,C[1]; INTEGER R,S,I,J; EXTERNAL INTEGER PROCEDURE DEG; R := DEG(A); S := DEG(B); C := 0*A; FOR J := R-S, R-S-1,..., 0 DO BEGIN C[J] := A[J+S]; FOR I := 0,...,S DO A[I+J] := A[I+J] - C[J]*B[I] END END

Assuming that the vectors A and B contain the coefficients of two polynomials, POLDIV puts the coefficients of their quotient (A divided by B) in the vector C. 74

GLOBAL PROCEDURE POLGCD(F,G,H); INTEGER R,S,I,J,K,L; ARRAY F,G,H[1]; VALUE F,G; EXTERNAL INTEGER PROCEDURE GCD; EXTERNAL INTEGER PROCEDURE DEG; R := DEG(F); S := DEG(G); WHILE G[S] # 0 DO BEGIN FOR I := R-S, R-S-1,___ 0 DO IF F[I+S] it 0 THEN BEGIN K := G[S] / GCD(F[I+S],G[S]); L := K#F[I+S] / G[S]; F := K*F; FOR J := 0,..., S DO F[I+J] := F[I+J] - L*G[J] END; F :=: G; R :=: S; S := DEG(G) END; H := F / F[R] END

POLGCD assumes that F and G are monic polynomials and puts the coeffi­ cients of their greatest common divisor over Z in the vector H.

GLOBAL PROCEDURE DIVMOD(A,B,C,P); VALUE A,B; ARRAY A,B,C[l]; INTEGER I,J,P,Q,R,S; EXTERNAL INTEGER PROCEDURE DEG; EXTERNAL INTEGER PROCEDURE INV; REM A := A/P; R := DEG(A); REM B := B/P; S := DEG(B); IF B[S] it 1 THEN Q := INV(B[S],P) ! REM A := Q*A / P ! REM B := Q*B / P; C := 0*A; FOR J := R-S, R-S-1.... 0 DO IF A[S+J] it 0 THEN BEGIN C[J] := A[S+J]; FOR I := 0,...,S DO REM A[I+J] := A[I+J] - C[J]*R[I] / P END END

DIVMOD assumes that A and B are polynomials with coefficients from the field with P elements, and puts the coefficients of their quotient (A divided by B) in the vector C. 75

8. Routines for Manipulating Elements in a. Polynomial Algebra

GLOBAL PROCEDURE ELTSUM(A,DA,B,DB,C,DC); INTEGER DA,DB,DC; ARRAY A,B,C[1]; EXTERNAL PROCEDURE LOWEST; C := DB*A + DA*B; DC := DA#DB; LOWEST(C,DC) END

ELTSUM sets the element C/DC equal to the sum of the elements A/DA and B/DB.

GLOBAL PROCEDURE ELTPRD(F,A,DA,B,DB,C,DC); VALUE A,B; ARRAY F,A,B,C[1]; INTEGER N ,DA,DB,DC,I,J,Q; EXTERNAL PROCEDURE LOWEST; N := HIGHBD(1,F); C := A[N-1]*B; FOR I := N-2,N-3,• , 0 DO BEGIN Q := C[N-1]; FOR J := N-1,N-2,...,1 DO C[J] := C[J-1]; C[0] := 0; FOR J := 0,...,N-1 DO C[J] := C[J] - Q*F[J]; C := C + A[I]*B END; DC := DA*DB; LOWEST(C,DC) END

ELTPRD assumes that A/DA and B/DB are elements in the algebra Ap , and sets C/DC equal to their product.

GLOBAL PROCEDURE ELTINV(F,THETA,DTH,PHI,DPH); INTEGER N,DTH,DPH; ARRAY F ,THETA,PHI[1]; VALUE THETA,DTH; EXTERNAL INTEGER PROCEDURE KDELTA; EXTERNAL PROCEDURE ELTPRD; EXTERNAL PROCEDURE REDUCE; EXTERNAL PROCEDURE LOWEST; N := HIGHBDO ,F); BEGIN INTEGER J,K; ARRAY ALPHA[0:N-1], M[0:N-1,0:2*N-1]; FOR J := 0,...,N-1 DO ALPHA[J] := KDELTA(J, 1); FOR K := 0,...,N-1 DO BEGIN FOR J := 0,...,N-1 DO M[K,J] := THETA[N-1-J] ! M[K,N+J] := DTH*KDELTA(K,J); ELTPRD(F,ALPHA,1,THETA,DTH,THETA,DTH) END; REDUCE(M,N-1,N-1,0); FOR J := 0 .... N-1 DO PHI[J] := M[N-1,N+J]; DPH := M[N-1,N-1]; LOWEST(PHI,DPH) END END

ELTINV assumes that THETA/DTH is an element of A-,, and that THETA/DTH F’ is not a zero-divisor. ELTINV set's PHI/DPH equal to the inverse of THETA/DTH.

£L. Miscellaneous Untyped Procedures

GLOBAL PROCEDURE EXTGCD(X,Y,A,B); VALUE X,Y; INTEGER X,Y,A,B,C,D,Q; A : = 1; B := 0; C:=0; D := 1; WHILE Y # 0 DO Q REM X:=X/Y!X:=:Y! A := A - Q*C ! B := B - Q*D ! A :=: C ! B :=: D; IF X < 0 THEN A := -A ! B := -B END

EXTGCD finds rational integers A and B such that A*X + B*Y = GCD(X,Y)

GLOBAL PROCEDURE EVAL(F, G, A, DA, B, DB); INTEGER N ,DA,DB,I; ARRAY F,G,A,B[1]; VALUE A,DA; EXTERNAL PROCEDURE ELTPRD; N := HIGHBDO ,F); B := 0*A; DB := 1; B[0] := G[N]; FOR I := N-1, N-2,..., 0 DO ELTPRD(F,B,DB,A,DA,B,DB) ! B[0] := B[0] + G[I]«DB END

EVAL assumes that A/DA is an element of A„ and that G is a polynomial EVAL sets B/DB = G(A/DA). 77

GLOBAL PROCEDURE IDENT(A); INTEGER I,J,N; ARRAY A[2]; EXTERNAL INTEGER PROCEDURE KDELTA; N := HIGHBD(2,A); FOR I := 0,...,N DO FOR J := 0,...,N DO A[I,J] := KDELTA(I,J) END

IDENT assumes that the matrix A has N+1 rows, numbered 0 through N. IDENT creates an N+1 by N+1 identity matrix in rows 0 through N of A.

GLOBAL PROCEDURE LOWEST(A,D); INTEGER D,H,I,K; ARRAY A[1] ; EXTERNAL INTEGER PROCEDURE GCD; H := HIGHBDO ,A); K := D; FOR I := 0,...,H DO K := GCD(K,A[I]); IF K # 1 THEN A := A/K ! D := D/K END

LOWEST removes any common factor from the entries of the vector A and D.

10. Integer Procedures

GLOBAL INTEGER PROCEDURE GCD(X,Y); VALUE X,Y; INTEGER X,Y; WHILE Y # 0 DO REM X := X / Y ! X :=: Y; GCD := ABS(X) END

GCD(X,Y) is the greatest common divisor of X and Y.

GLOBAL INTEGER PROCEDURE LCM(X,Y); INTEGER X,Y; EXTERNAL INTEGER PROCEDURE GCD; LCM := X*Y / GCD(X,Y) END

LCM(X,Y) is the least common multiple of X and Y.

GLOBAL INTEGER PROCEDURE KDELTA(X,Y); INTEGER X,Y; IF X = Y THEN KDELTA := 1 ELSE KDELTA := 0 END

KDELTA(X,Y) is Kronecker's delta function of X and Y. 78

GLOBAL INTEGER PROCEDURE NQUOT(X,Y); INTEGER X,Y; IF 2*X <= Y THEN NQUOT := 2*X - Y / 2*Y ELSE NQUOT := 2*X + Y - 1 / 2*Y END

NQUOT(X,Y) is the normalized quotient Q of X and Y, satisfying |X - Q*Y! Y/2. NQUOT assumes that Y is positive.

GLOBAL INTEGER PROCEDURE PPART(X,P); INTEGER X,P,Y; Y := X; WHILE P DIVIDES Y DO Y := Y / P; PPART := X / Y END

PPART(X,P) is the largest power of P that divides X.

GLOBAL INTEGER PROCEDURE DEG(F); INTEGER K; ARRAY F[1]; K := HIGHBDO ,F); • WHILE K > 0 AND F[K] = 0 DO K := K - 1; DEG := K END

DEG(F) is the degree of the polynomial F.

GLOBAL INTEGER PROCEDURE INV(A,Q); INTEGER A,Q,X,Y; EXTERNAL PROCEDURE EXTGCD; EXTGCD( A, Q, X, Y); WHILE X*A < 0 DO X := X - SIGN(X)*Q; INV := X END

INV(A,Q) is the inverse of A modulo Q. That is to say, INV(A,Q) is an integer K such that K*A is congruent modulo Q to the non-negative GCD of A and Q. CHAPTER V

TEST DATA AND RESULTS

1. 650 Polynomials

To compare the behavior of the two algorithms we assembled a collection of 650 polynomials, all monic with rational integer coefficients, all irreducible over the rationals. This set included 50 polynomials of each degree from 3 to 15.

Our first aim was to produce polynomials with "natural" coefficients. By this we vaguely mean that the polynomials should bear some resem­ blance to those one encounters in real life. The coefficients should therefore be generally small, and the polynomials of larger degree should be sparse. After some experimentation, we arrived at the formula _ 3(2u-1) L " nu(1-u) ' Here n is the degree of the current polynomial, and u is a uniform ran­ dom variable taking real values in the open interval (0,1). V/e obtain the next coefficient by reducing C to the nearest integer to C between C and 0 (inclusive). We produced the values for u as described in [10]. We found the factor 3/n to be necessary to make the discriminants of the polynomials of larger degree factorizable without oversimplifying the examples of small degree.

We required that each example be irreducible over the rationals. This we tested by applying the Hensel-Zassenhaus p-adic polynomial factori­ zation algorithm [13].

We required also that we be able to factorize the discriminant of each example polynomial. This we attempted to do by removing all prime fac­ tors up to 17369. If anything remained we tested it for primality by attempting to exhibit a primitive root. (To test a number k this way requires a complete factorization of k-1; see [7].) At degree 15, ap­ proximately 95$ of the examples generated failed this test. It was for this reason that we decided it would be too time-consuming to produce examples of degree greater than 15.

Lastly we required that the equation order (see Introduction) of each example polynomial be non-maximal. (This can be quickly tested by means of the Dedekind criterion, ch.Ill, s.3.) We were somewhat surprised to find that approximately 25$ of the example polynomials that passed all the earlier tests had non-maximal equation order, and that this percen­ tage did not vary appreciably with the degree.

We continued generating examples until we had accumulated 50 of each degree that passed all of the tests. These polynomials, with their discriminants, appear in Appendix B.

79 80

2j. Experimental Results

We determined the maximal order of the polynomial algebra of each exam­ ple polynomial in two ways: first by the implementation of the Round Two algorithm that appears in chapter II, and second by the implemen­ tation of the Round Four algorithm appearing in Chapter IV. The results of these computations, which is to say the execution times for each method and the indices of the maximal orders, appear in Table 1.

A disadvantage of the Round Four algorithm quickly presented itself. 3 The Round Two algorithm requires storage of the order of n , while the 2 Round Four algorithm requires storage of the order of n at each of possibly several levels of recursion, with the worst possible case still 3 only of the order of n . Nonetheless, a large percentage of the cases of degree 10 and above failed with the Round Four algorithm on account of shortage of memory space. We spent a considerable amount of time and made several changes in the Round Four program to ameliorate this ef­ fect; we were able to save all but 26 of the 650 original examples, but at a cost of significant deterioration in the performance of the pro­ gram.

The difficulty is that the Round Four algorithm is much more complex than the Round Two algorithm. We have seen in Chapter II how simply the Round Two algorithm may be expressed. The Round Two program, when com­ piled, occupies only 6667 machine words, leaving about 20,500 words in our 28K machine for the creation of arrays and large integers. (The op­ erating system accounts for approximately 1500 words.) The Round Four program is much larger, occupying over 18,000 machine words, leaving only about 8500 words of work space. Under the circumstances the Round Four program performed quite creditably.

This difficulty would be removed if one were to use a machine with more memory. It remains the fact, however, that in terms of relative com­ plexity, the Round Two algorithm has the clear advantage.

For purposes of statistical comparison we have discarded the 26 examples for which the Round Four program ran out of space. In answer to the ob­ jection that this may bias our results we would say first that the 26 examples were generally also unfavorable for the round two algorithm, and second that the tendency of the execution time for the Round Four algorithm to grow more than an order of n more slowly than that of the Round Two algorithm is already quite pronounced before degree 10, where the first failure of the Round Four program occurs.

In Figure 1 we have drawn a graph of the logarithm of the ratio of the Round Two execution time to the Round Four execution time versus the logarithm of the degree for the 62H examples that both programs handled 81

successfully. (If this ratio were exactly proportional to a power of n then all the points of the graph would lie on a straight line, the slope of which would give the exponent of n.)

Even at degree 15 there were examples which the Round Two program fin­ ished more quickly. Nonetheless, the general upward slant of the entire set of points is undeniable.

Fitting a line to this set of points by the least squares method, we find it to have a slope of 1.2112. It is in this sense that we say that 1 2112 the ratio of the execution times is effectively of the order of n

3_i_ Conclusions

We conclude that the Round Four algorithm is superior to the Round Two algorithm, provided that two conditions are met:

1. Sufficient memory must be available to give the Round Four program adequate work space; 2. The degree of the polynomial should be at least 10 for the Round Four method to show an advantage; this advan­ tage increases with the degree.

If memory space is severely limited, or if the degree is 9 or less, then the Round Two algorithm is to be preferred.

Our investigation of the maximal order algorithms gave us several months of experience with the ALGEB language. It proved itself to be every­ thing we hoped it would be. We found ourselves able to express our intentions clearly and concisely, never being forced to adopt an arti­ ficial construction to perform what we felt to be an essentially simple operation. There were occasions when the language itself suggested sim­ plifications in certain procedures.

We conclude that ALGEB is an effective tool for computing in algebraic number theory, not requiring the immense hardware resources needed by other algebraic systems, and being much more congenial for the expres­ sion of algebraic programs than are the other currently available lang­ uages for small computers. It is our hope that the mathematical commu­ nity will share our opinion, and that ALGEB will find widespread use in algebraic research. 82 TABLE 1

Execution Times

The columns "ROUND 2" and "ROUND 4" give the times, in seconds, taken by the Round Two and Round Four programs, respectively, to compute a Z-basis for the maximal order in the corresponding polynomial algebra. Asterisks in the "ROUND 4" column indicate that the Round Four program failed to finish on account of memory shortage. The "INDEX" column gives the Z-module index of the polynomial order in the maximal order.

83 NO. ROUND 2 ROUND 4 INDEX DEG NO. ROUND 2 ROUND 4

1: 2.82 16.93 3 4 1 13.48 57.13 2 : 6.02 9.28 2 2 6.93 29.38 3: 8.62 20.63 4 3 13.80 28.45 4: 4.95 8.13 2 4 17.52 26.02 5: 3.43 37.13 83 5 15.77 24.43 6 : 2.77 21.03 3 6 8.62 33.37 7: 5.45 16.97 2 7 7.47 28.53 8: 3.85 36.80 15 8 11.70 26.90 9: 4.92 13.68 2 9 6.45 32.43 10: 4.53 17.50 2 10 17.00 35.12 11: 7.75 26.98 8 11 6.67 36.47 12: 5.37 18.22 2 12 6.02 15.13 13: 3.03 18.50 5 13 11.52 28.28 14: 2.60 16.67 2 14 11.73 22.23 15: 6.30 20.98 2 15 ' 24.20 35.75 16: 2.82 16.65 3 16 14.68 61.68 17: 5.12 8.52 2 17 6.05 26.17 18: 3.98 23.03 3 18 11.60 27.70 19: 5.73 20.07 4 19 13.08 56.63 20: 2.87 15.57 2 20 32.78 56.50 2 1 : 6.07 9.08 2 21 6.23 15.50 22: 3.80 24.80 5 22 6.32 34.90 23: 3.03 19.35 5 23 8.67 46.90 24: 5.10 18.05 2 24 18.20 24.68 25: 5.42 10.02 8 25 6.70 26.97 2 6 : 2.83 15.73 2 26 12.45 28.22 27: 2.83 19.57 2 27 11.53 20.95 28: 4.10 43.32 15 28 19.03 32.90 29: 5.63 22.97 8 29 5.95 22.80 30: 5.00 18.40 2 30 6.02 28.22 31: 4.18 20.70 2 31 16.97 33.43 32: 3.25 23.67 5 32 15.85 51 .17 33: 5.32 18.42 2 33 12.70 28.60 34: 5.23 8.27 2 34 16.72 36.73 35: 5.40 18.97 2 35 14.93 22.50 3 6 : 2.63 16.23 3 36 19.00 29.45 37: 4.78 8.33 2 37 17.70 37.47 38: 3.00 18.63 2 38 6.13 23.68 39: 6.35 19.82 2 39 6.23 24.05 40: 6.27 34.37 6 40 13.30 50.22 41: 3.27 19.57 5 41 15.37 72.57 42: 2.88 15.68 2 42 7.95 27.13 43: 6.33 19.55 2 43 14.57 36.35 44: 3.68 22.92 3 44 6.27 28.88 45: 5.37 16.88 2 45 15.45 22.58 46: 2.80 15.65 2 46 6.03 22.58 47: 5.37 13.67 2 47 14.80 26.45 48: 5.57 19.32 2 48 6.67 23.17 49: 5.33 8.33 2 49 24.43 71.62 50: 5.40 10.10 8 50 13.15 44.72 85

DEG NO. ROUND 2 ROUND 4 INDEX DEG NO. ROUND 2 ROUND 4 INDEX

5 1 20.75 34.67 2 1 41.50 33.72 4 2 39.55 48.82 4 2 20.43 60.45 8 3 23.77 33.82 2 3 39.63 56.58 2 4 15.97 39.90 3 4 37.58 85.40 2 5 27.63 69.28 14 5 39.40 60.73 9 6 25.42 78.70 6 6 33.40 61.22 2 7 21.57 32.42 2 7 23.55 78.82 7 8 23.70 34.75 2 8 27.25 54.50 3 9 45.57 118.52 108 9 24.53 69.75 8 10 26.87 31.03 2 10 56.20 148.28 152 11 35.68 77.83 4 11 59.93 63.42 9 12 21.15 51.87 2 12 23.10 59.40 13 13 27.97 45.78 2 13 26.43 62.83 3 14 23.68 32.70 2 14 39.32 45.03 2 15 11.23 58.87 3 15 23.55 76.05 13 16 11.70 44.52 3 16 39.47 54.87 2 17 14.37 71.55 5 17 42.75 45.98 2 18 11.43 28.43 2 18 40.13 63.95 2 19 11.47 29.70 2 19 85.38 78.35 8 20 33.53 34.08 4 20 19.43 38.58 2 21 23.13 35.53 2 21 63.77 103.58 36 22 53.72 70.47 1088 22 51.62 66.13 9 23 34.05 43.13 4 23 38.30 48.58 4 24 22.43 33.37 2 24 35.93 88.08 1681 25 12.72 46.58 3 25 32.08 59.07 2 26 13.93 58.30 7 26 39.78 60.08 8 27 15.10 33.78 3 27 59.32 78.87 8 28 42.02 39.70 4 28 21.17 65.33 5 29 21.83 34.90 2 29 61.73 47.03 4 30 36.82 89.02 12 30 45.55 57.67 2 31 22.73 42.98 2 31 18.43 43.18 3 32 23.27 60.85 9 32 49.10 64.07 4 33 25.33 46.37 3 33 47.25 43.13 2 34 21.92 51.48 2 34 36.20 59.98 2 35 12.15 33.77 2 35 77.47 69.43 8 36 34.78 40.93 4 36 28.93 53.28 2 37 14.43 43.03 3 37 105.07 66.37 64 38 36.77 54.40 4 38 19.85 61.72 8 39 20.25 32.18 2 39 77.12 167.70 117 40 17.30 42.07 2 40 25.80 69.00 7 41 25.27 39.77 3 41 30.18 83.73 11 42 16.43 33.17 2 42 58.88 61.08 8 43 33.40 43.18 4 43 58.38 73.00 9 44 47.40 64.05 8 44 157.27 142.42 192 45 19.80 46.62 5 45 58.73 43.15 8 46 24.10 35.98 2 46 43.40 38.47 2 47 44.40 50.87 16 47 78.90 70.08 8 48 21.90 35.20 2 48 27.82 44.80 2 49 31.48 73.12 4 49 33.90 39.35 2 50 22.50 35.05 3 50 74.18 67.50 4 86

DEG NO. ROUND 2 ROUND 4 INDEX DEG NO. ROUND 2 ROUND 4 INDEX

7 1 35.90 73.45 3 1 98.07 78.98 2 2 89.17 81.08 9 2 111.42 107.42 4 3 62.27 84.33 3 3 49.28 146.33 3 4 42.47 186.58 527 4 86.82 113.40 3 5 59.32 62.37 9 5 102.48 72.33 2 6 41.12 107.12 13 6 142.80 78.43 4 7 62.43 124.28 2 7 143.52 215.88 20 8 80.33 104.92 8 8 140.10 158.15 64 9 86.55 86.53 4 9 43.15 76.47 2 10 110.32 110.82 8 10 51.53 99.68 3 11 55.17 58.47 4 11 153.08 111.17 8 12 31.08 55.67 2 12 186.70 164.62 16 13 103.22 77.22 8 13 107.88 95.22 2 14 79.52 182.98 15 14 94.32 124.73 2 15 120.43 261.63 1396 15 92.25 73.52 2 16 41 .32 77.00 3 16 43.80 99.28 9 17 63.65 108.63 3 17 116.52 158.13 2 18 39.10 83.33 3 18 193.32 143.68 12 19 32.17 63.52 3 19 61.92 88.50 3 20 34.03 63.63 3 20 196.43 190.73 8 21 55.65 72.70 2 21 106.75 91.50 2 22 69.42 83.87 3 22 93.28 99.60 2 23 80.38 142.43 8 23 95.52 107.77 8 24 59.35 78.33 7 24 101.15 211.08 12 25 30.00 66.92 3 25 139.92 125.45 4 26 54.83 48.37 2 26 109.83 124.13 9 27 164.60 134.90 64 27 231.67 114.63 16 28 30.28 67.32 2 28 160.70 93.45 4 29 63.63 104.35 4 29 58.17 85.10 3 30 42.12 71.92 13 30 194.93 146.93 8 31 38.20 124.58 12 31 119.18 65.83 2 32 60.13 94.17 2 32 88.92 142.10 2 33 37.92 104.13 5 33 103.88 93.02 2 34 30.32 95.23 8 34 95.95 113.97 9 35 58.30 73.52 2 35 114.02 117.30 3 36 140.03 189.02 24 36 170.32 134.57 4 37 62.40 63.60 2 37 87.17 99.43 25 38 93.37 102.35 4 38 142.68 102.40 4 39 62.77 68.72 2 39 52.23 131.43 81 40 36.93 110.65 7 40 155.57 195.95 225 41 35.47 142.58 6 41 102.78 111.47 2 42 75.92 95.00 8 42 112.53 220.75 57 43 60.67 54.40 2 43 62.07 70.05 2 44 43.70 157.98 39 44 95.75 78.45 2 45 78.13 73.20 5 45 88.50 80.88 2 46 61.72 65.90 4 46 69.78 140.43 7 47 35.10 62.30 3 47 46.75 64.85 2 48 53.97 53.92 2 48 90.48 102.08 2 49 59.08 75.08 2 49 338.00 249.88 128 50 66.48 75.33 2 50 68.52 108.55 3 87

DEG NO. ROUND 2 ROUND 4 INDEX DEG NO. ROUND 2 ROUND 4 INDEX

1 162.00 158.75 3 10 1 232.28 249.05 5 2 145.58 146.03 2 182.80 132.37 2 3 108.20 178.78 19 3 198.47 114.28 2 4 290.23 113.08 64 4 89.58 103.30 2 5 365.95 237.42 16 5 317.57 299.42 20 6 212.75 279.07 26 6 350.65 277.80 64 7 255.83 221.83 12 7 182.63 122.57 2 8 354.22 224.42 64 8 140.00 124.25 3 9 98.83 132.98 11 9 108.37 128.63 5 10 156.40 97.12 2 10 395.80 202.35 16 11 67.83 85.20 2 11 318.50 166.20 16 12 176.43 153.90 2 12 144.87 211 .10 5 13 119.13 145.78 2 13 408.88 159.72 8 14 268.95 155.20 16 14 209.42 163.68 2 15 118.90 132.52 4 15 141.65 164.30 13 16 98.93 143.97 2 16 727.92 Ktt* 512 17 72.05 207.88 6 17 174.55 140.95 3 18 134.88 101.00 8 18 229.27 250.53 25 19 194.93 152.47 8 19 402.07 275.32 8 20 229.65 215.45 24 20 278.03 364.60 2 21 160.77 121.65 4 21 298.98 136.02 4 22 346.70 231.78 64 22 311.97 126.48 8 23 162.35 122.75 4 23 655.85 667.65 512 24 130.87 93.52 2 24 188.65 121.28 8 25 140.08 120.55 2 25 186.67 176.93 4 26 169.90 115.97 4 26 189.13 128.58 2 27 200.93 392.13 4 27 318.30 230.58 27 28 91.75 358.27 40 28 219.47 347.83 72 29 133.45 284.77 4 29 173.88 167.12 4 30 72.55 144.33 3 30 133.70 149.15 7 31 65.65 98.97 3 31 128.92 229.43 5 32 140.72 127.35 2 32 94.75 124.83 3 33 207.30 145.13 8 33 317.30 142.30 4 34 194.22 156.75 9 34 204.33 176.30 2 35 225.80 117.63 27 35 105.28 204.72 7 36 125.53 120.63 4 36 321.62 260.28 4 37 135.55 109.73 2 37 189.00 139.03 2 38 148.52 154.67 3 38 220.17 120.98 2 39 100.27 147.05 3 39 330.00 140.10 4 40 145.00 142.20 3 40 396.48 147.52 4 41 106.47 131.58 4 41 248.25 141.70 8 42 145.03 177.18 2 42 270.57 121.73 4 43 188.70 100.52 3 43 197.65 189.02 8 44 66.02 116.07 5 44 511.63 176.58 64 45 78.02 103.20 3 45 111.42 163.08 5 46 130.62 88.90 2 46 169.47 109.38 2 47 82.00 92.25 3 47 121.13 258.13 27 48 232.27 179.48 4 48 312.65 191.53 4 49 207.42 110.77 4 49 827.58 746.50 6400 50 133.45 96.87 2 50 239.85 149.05 9 88

DEG NO ROUND 2 ROUND 4 INDEX DEG NO ROUND 2 ROUND 4 INDEX

11 1 176.12 289.60 7 12 1 1228.02 XXX 32 2 120.27 161.20 2 2 213.08 212.25 3 3 308.05 151.90 8 3 1136.85 328.20 16 4 322.18 185.80 9 4 349.37 342.38 9 5 360.77 152.37 2 5 394.62 247.80 3 6 290.45 210.60 4 6 243.92 584.05 31 7 944.18 XXX 64 7 222.93 212.83 11 8 347.17 288.13 4 8 556.72 XXX 64 9 214.77 255.18 7 9 356.38 207.42 2 10 299.90 298.48 3 10 448.87 472.27 82 11 169.78 295.18 7 11 232.33 258.97 3 12 162.42 242.40 5 12 1173.02 983.20 131072 13 254.27 151.13 2 13 541.82 222.42 4 14 298.15 361.08 34 14 348.60 242.93 2 15 321.45 222.70 4 • 15 555.62 XXX 16 16 289.63 454.60 32 16 193.43 192.92 7 17 566.23 182.18 8 17 268.13 301.65 3 18 707.78 XX* 32 18 240.63 380.32 7 19 237.80 148.10 3 19 410.32 385.95 14 20 522.53 184.50 8 20 363.65 545.82 8 21 250.93 154.55 2 21 192.53 296.02 5 22 694.13 XXX 64 22 162.67 185.83 2 23 181.60 311.73 41 23 616.65 294.28 8 24 326.67 144.92 4 24 370.38 251.07 3 25 162.08 267.37 13 25 1029.40 631.20 320 26 154.90 264.95 11 26 936.93 403.98 32 27 263.72 172.70 2 27 496.33 223.70 8 28 326.57 924.70 46 28 367.85 243.70 2 29 238.75 129.98 4 29 179.48 158.92 3 30 398.13 779.27 20 30 241.77 1325.02 1289 31 488.43 197.83 8 31 898.95 875.42 6561 32 410.42 304.43 5 32 903.80 501.88 64 33 285.65 207.40 2 33 210.17 242.22 29 34 287.30 492.17 24 34 195.35 400.77 7 35 585.52 348.47 8 35 252.55 269.68 11 36 380.13 XXX 4 36 618.73 XXX 4 37 322.02 182.87 3 37 387.05 290.02 4 38 393.52 214.98 4 38 613.03 XXX 128 39 243.73 183.83 2 39 458.45 602.95 4 40 143.83 407.68 19 40 517.87 212.83 8 41 247.23 148.93 2 41 290.58 233.20 11 42 137.17 245.40 5 42 330.78 187.73 2 43 474.23 181.90 8 43 453.75 467.13 8 44 747.60 305.47 16 44 372.87 179-47 2 45 267.20 156.22 2 45 500.62 224.53 4 46 1072.08 708.55 512 46 277.93 206.50 2 47 379.97 162.92 2 47 548.90 199.33 4 48 365.30 355.87 38 48 533.83 213.88 8 49 197.75 332.15 19 49 682.50 481.60 36 50 792.15 226.28 32 50 612.10 363.47 4 89

DEG NO ROUND 2 ROUND 4 INDEX NO ROUND 2 ROUND 4 INDEX

13 1 199.97 173.07 2 1 551.83 350.47 2 2 420.45 278.17 3 2 676.03 268.17 4 3 452.98 317.07 2 3 1752.02 531.88 32 4 998.23 317.53 16 4 1030.68 240.33 4 5 582.32 349.67 2 5 437.32 292.73 11 6 723.07 XXX 64 6 1008.55 419.08 25 7 257.23 343.73 5 7 446.48 397.00 3 8 232.23 208.42 4 8 619.47 378.87 2 9 382.95 440.87 11 9 268.35 362.67 9 10 405.92 195.27 2 10 646.67 372.27 2 11 245.25 360.00 11 11 600.47 276.32 8 12 1287.08 392.48 81 12 916.72 423.78 7 13 575.73 266.92 2 13 295.27 239.88 3 14 270.43 215.80 3 14 1633.20 932.37 32 15 482.82 324.32 4 15 837.85 285.32 2 16 796.77 514.87 44 16 282.42 217.85 2 17 305.58 492.15 5 17 532.22 323.55 2 18 427.55 222.62 2 18 2250.35 683.03 32768 19 300.65 290.63 17 19 532.13 404.33 3 20 240.82 862.20 113 20 477.15 602.67 128 21 318.75 379.73 59 21 775.27 734.90 50 22 859.53 258.67 4 22 276.10 303.45 3 23 529.48 428.53 3 23 789.93 290.08 2 24 233.92 550.63 29 24 487.48 270.13 5 25 412.30 205.70 2 25 1075.53 438.12 8 26 902.95 422.30 16 26 548.67 336.72 2 27 674.15 224.72 4 27 422.70 492.67 5 28 358.05 289.25 17 28 640.30 XX# 7 29 1255.22 253.57 64 29 1649.67 1127.52 48 30 553.53 374.73 4 30 750.18 250.40 2 31 318.25 359.48 5 31 583.78 376.23 2 32 573.30 215.23 2 32 602.05 266.32 2 33 594.05 759.27 38 33 371.85 469.32 289 34 577.00 652.07 6 34 1137.40 353.08 16 35 345.73 256.82 3 35 323.28 268.60 7 36 786.40 405.85 8 36 405.15 611.23 23 37 1192.15 392.37 16 37 2034.17 922.75 256 38 200.17 274.27 2 38 1298.90 1632.53 1016 39 442.68 309.13 2 39 751.62 803.58 22 40 651.43 269.77 4 40 709.48 243.50 2 41 766.53 241.77 4 41 1588.00 518.92 16 42 359.55 440.02 7 42 1273.40 522.23 16 43 859.00 272.97 27 43 1671.45 713.53 32 44 202.37 200.27 4 44 542.62 375.38 2 45 511.50 270.63 2 45 293.37 237.00 3 46 558.22 381.20 64 46 259.18 410.93 3 47 1694.63 457.17 1024 47 1316.33 359.48 8 48 381.00 393.42 11 48 527.82 629.43 2 49 688.05 285.02 8 49 323.70 xxx 109 50 483.58 219.70 2 50 1488.28 XXX 16 90

DEG NO. ROUND 2 ROUND 4 INDEX

15 1 985.67 340.87 5 2 724.87 285.18 2 3 2149.08 1018.52 1152 4 2300.57 530.32 32 5 2309.33 373.28 128 6 642.53 »** 8 7 1099.30 269.97 3 8 1078.55 322.77 9 9 735.53 *** 8 10 859.97 525.48 4 11 478.53 537.23 7 12 747.67 307.87 2 13 1675.67 463.82 16 14 1565.23 683.37 128 15 1879.47 408.73 16 16 2770.32 1025.67 65536 17 1700.30 556.23 27 18 708.68 358.90 8 19 402.95 540.33 5 20 1125.50 339.78 4 21 1925.68 860.77 16 22 380.53 «** 128 23 827.57 *«* 32 24 704.15 330.45 3 25 408.70 702.93 17 26 1170.38 1162.28 128 27 890.23 «** 243 28 1130.85 374.38 9 29 843.18 ««« 243 30 928.65 522.95 8 31 436.47 495.37 9 32 718.80 240.77 4 33 362.03 298.90 2 3b 875.32 «»« 243 35 3277.00 *«* 128 36 1045.92 445.83 3 37 435.02 299.13 343 38 865.55 «** 32 39 1059.82 *** 142 MO 530.98 815.47 19 41 4062.67 *** 4096 42 2068.10 486.78 32 43 698.40 593.45 2 44 386.92 471.92 7 45 540.90 666.87 19 46 879.80 510.23 3 47 2666.28 «** 128 48 705.47 336.58 3 49 1041.13 332.27 5 50 421.68 338.05 11 BIBLIOGRAPHY

1. Berwick, W. E. H. Integral Bases. Cambridge Tracts in Mathematics and Mathematical Physics, No. 22. Cambridge, 1927.

2. Borevich, Z. I., and Shafarevich, I. R. Number Theory. New York, Academic Press, 1966.

3. Deuring, Max. Algebren. Berlin, Springer-Verlag, 1968.

4. Floyd, Robert W. "Syntactic Analysis and Operator Precedence". Journal of the Association for Computing Machinery, Vol. 10, p. 316. July, 1963.

5. Kaur, Gurnam. "The Minimum Discriminant of Sixth Degree Totally Real Algebraic Number Fields". Journal of the Indian Mathematical Society, Vol. XXXIV, No. 2, pp. 123-134. May, 1970.

6. Kehlenbach, Ewald. Berechnung von Ganzheitsbasen in Algebraischen ZahlkOroern. Diplomarbeit, Karlsruhe, 1973.

7. Knuth, Donald E. The Art of Computer Programming. Volume 2. Reading, Massachusetts, Addison-Wesley, 1969.

8. Koblitz, Neal. P-adic Numbers, p-adic Analysis and Zeta-functions. New York, Springer-Verlag, 1977.

9. Liang, Joseph, and Zassenhaus, Hans. "The Minimum Discriminant of Sixth Degree Totally Complex Algebraic Number Fields". Journal of Number Theory, Vol. 9, No. 1, pp. 16-35. February, 1977.

10. Payne, W. H., Rabung, J. R. and Bogyo, T.P. "Coding the Lehmer Pseudo-Random Number Generator". Communications of the Association for Computing Machinery, Vol. 12, No. 2, pp. 85-86. February, 1969.

11. van der Waerden, B. L. Algebra.. Volume 1. Seventh Edition. New York, Ungar, 1970.

91 92

12. Zassenhaus, Hans. "Ein Algorithmus zur Berechnung einei Minimalbasis uber gegebener Ordnung" in Funktionalanalvsis. pp. 90-103. Basel, Birkhfluser Verlag, 1967.

13. ------"On Hensel Factorization, I 1'. Journal of Number Theory, Vol. 1, No. 1, pp. 291-311. July, 1969.

1H. ------"On the Second Round of the Maximal Order Program" in Applications of Number Theory io Numerical Analysis, pp. 389-431. New York, Academic Press, 1972.

15. ------"On Hensel Factorization, II". Symposium on Algebraic Number Theory, Rome, 1973.

16. ------"On the Embedding of an Order into a Maximal Order" in Proceedings of the Conference on Orderst Group Rinas, and Related Topics. Springer Lecture Notes 353. New York, Springer- Verlag, 1973.

17. ------"Structural Stability of Absolutely Semisimple Hypercomplex Systems over Complete Fields of Reference". Communications in Algebra, to appear. APPENDIX A

Grammar for ALGEB (Second Pass)

::= name I [] ::= integer constant I ! 1 [] ! () ::= I 's I + ! - u u ::= ! * ! * ::= | + i - ::= name < ! <= I = ! >= ! > ! # ! DIVIDES I < 1 <= | = i >= ! > i # ! DIVIDES ::= TRUE ! FALSE ' ! i = mod ! // mod ! i () I string ::= ! NOT ::= i AND ::= I OR ::= name ::= name I () ::= ! ! () ::= | /' ! + I - u u ::= I * I * ' # ::= ! + ! - ::= ' ! I , I , ! , ::= name ::= ! () ::= name ::= I () ::= name ::= ! () ::= name ::= ! ()

93 ::= PROCEDURE END ::= i ,..., 1 , ! , ,..., ::= name ::= name ::= name ::= I ::= ! ::= ! ::= FOR ::= := ::= WHILE ::= GOTO

::= bof eof ::= bof eof ::= bof
eof ! bof eof APPENDIX B

650 Irreducible Polynomials and Their Discriminants

DEGREE 3

1: x3 - 9x - 19 d -6831 = - 33 . 11 . 23 2: x3 + 24x2 - 4 d = 220752 = 2 4 . 33 . 7 . 73 3: x3 - 3x + 30 t- on c- C\1 on CM «— CTlC\J ii I 1 d — • 4: x3 - x2 - x - o 3 d = -304 = - 24 . 19

5: x3 + 16x2 + x + 13 d = -213559 = - 31 . 832 6 : x3 - 25x2 - x - 2 d — -125379 = - 32 . 13931 7: x3 - 33x2 + x - 1 d -142096 = - 24 . 83 . 107 8: x3 + 3x2 - 29 d -19575 = - 33 . 52 . 29 9: x3 - x2 - 8 d = -1760 = - 25 . 5 . 11 10: x3 + 2x - 4 d = -464 = - 24 . 29 11: x3 + x2 - 17x - 1 d = 20224 = 28 . 79 12: x3 + x2 + 5x + 1 d = -416 = - 25 . 13 13: x3 + 8x - 1 d = -2075 = - 52 . 83 14: x3 - x + 8 d -1724 = - 22 . 431

95 -29200 = - 2 . 52 . 73 x2 - 17x - 6 17109 = 32 . 1901 4x2 - 84x + 4 2458064 = 2 4 . 7 . 17 . 1291 8x2 - 97x + 2 4284792 = 23 . 33 . 83 . 239 178x2 + 5x - 4 -89380784 = - ;4 . 29 . 192631 x2 + 2x + 2764 -206183372 = - 22 . 647 . 79669 3x2 + 3x - 3 li -432 = - 2 . 3 9x2 - 43x + 8 545125 = 53 . 2 . 89 2x - 29 -22675 = - 52 907 4x2 - 2x + 116

-316816 = - 24 . 19801 5x2 - x + 3 -1984 = - 26 . 31 x2 - 2x + 20 -9964 = - 22 . 47 . 53 x2 - 2x + 32 -28892 = - 22 31 • 233 17x2 - 2x + 9 -183375 = - 32 . 53 . 163 3x2 - 13x + 2135 -121332416 = - 26 . 61 . 31079 2x2 + 6x - 4

-1888 = - 25 . 59 3x2 - 2x + 16

-10300 = - 22 52 . 103 97

32: x3 - 18x 2 - 5x - 1 d = -16375 = - 53 . 131 33: x3 + x2 + x - 19 d = -10016 = - 25 . 313 34: x3 + 7x2 - x - 3 d = 4304 = 2 4 . 269 35: x3 + 5x2 - 3x + 5 d = -4192 = - 25 . 131 36: x3 + x2 + 9 d = -2223 = - 32 • 13 . 19 37: x3 - 4x2 + 4 d = 592 = 24 . 37 38: x3 + 26x2 - 37x + 2 d = 952708 = 22 . 29 . 43 . 191 39: x3 - 3x2 - 20 d = -12960 = - 25 . 34 • 5 40: x3 + x2 - 35x - 3 d = 174384 = 24 . 32 . 7 • 173 41: x3 + 5x2 - 2x + 1 d = -575 = - 52 . 23 42: x3 - 2x2 + 27x + 2 d = -77804 = - 22 . 53 . 367 43: x3 + x2 + 5x + 13 4 2 d = -3920 = -2.5.7 44: x3 + x2 - x + 17 d = -8172 = - 22 . 32 . 227 45: x3 + x2 + 81x + 1 d = -2117776 = - 24 . 132361 46: x3 + x2 - 2x + 4 d = -556 = - 22 . 139 47: x3 +x2 - 8 d = -1696 = - 25 . 53 48: x3 - 11x2 - 4x + 4 d = 26224 = 24 . 11 . 149 98

49: x3 - 9x2 + 11x + 1 d = 5584 = 2 4 . 349 50: x3 - 7x2 - x - 1 d = -1472 = - 2 ° . 23

DEGREE 4 4 3 1: x - 3x - 11x + 21 d = -2064096 = - 25 . 33 . 2389 2 : x4 + 14x2 - x + 105 d = 84496357 = 11 2 . 277 . 2521 4 3 2 3: x - x - 13x+x+4 d = 1562688 = 26 . 32 . 2713 h a 4: x + 5x +16 d = -3271424 = - 28 . 13 . 983 5: x4 + 12 x2 + 4x - 4 d = -1866496 = - 28 . 23 . 317 6 : x4 - x3 + 17 d = 1249925 = 5 2 . 172 . 173 4 3 2 7: x +6 x + x - 3x + 2 d = -107359 = - 73 . 313 U 2 8: x - x + 7 d = 81648 = 2 4 . 36 . 7 9: x4 - 38x3 - x2 + 5x + 3 d = -466466751 = - 3 2 . 601 . 86239 10: x4 - 2 x3 + x2 + 4x + 4 d = 41984 = 2 10 . 41 11: x4 + 2x3 + x2 - 13x - 5 d = -789175 = - 5 2 . 31567 12 : x4 - 11x2 + 4x + 1 d = 271952 = 24 . 23 . 739 13: x4 - 11x2 - 2 x + 4 d = 701120 = 26 . 5 . 7 . 313 14: x4 - x3 + 10x2 - 17x - 1 d = -2969872 = - 24 . 419 . 443 99 4 2 2 15: x - 8x + 2 x + 1 d = -94208 = - 2 12 . 23 16 : x4 - 23x3 - 19x + 5 d = -53^019824 = - 2 4 . 33 . 13 . 95089 17: x4 - 4lx3 + 4x2 + x + 3 d = -693623692 = -22 . 173405923 18: x4 - 34x3 + 1 d = -36080816 = - 24 . 1237 . 1823 19: x4 - 2 x3 - 66 d = -75480768 = - 2 6 . 33 . 112 . 192 2 0 : x4 + 26 x2 + 1 14 2 2 d = 7225344 = 2.3.7 21 : x4 - 4x3 + 71x2 + 6 x - 1 d = -443436848 = - 24 . 27714803 2 2 : x4 + 4x3 + 5x - 1 d = -57483 = - 3 3 . 2129 23: x4 - 4x2 + 2x - 37 d = -15836592 = - 2 4 . 3 • 372 . 241 4 2 2 24: x - 20 x + 2x - 3 d = -37817088 = - 28 . 3 . 41 . 1201 25: x4 - 14x2 - 11x - 1 d = 536725 = 5 2 . 7 . 3067 2 6 : x4 - 2 x3 + 2 x - 8 d = -108976 = - 24 . 72 . 139 27: x4 + x2 + 544x + 10 d = -2364183927136 = - 25 . 163 . 227 . 1996723 2 8: x4 + 9x2 + 10x + 12 d = 1202688 = 29 . 34 . 29 4 2 2 29: x - 5x5 - 8x + x - 1 d = -207356 = - 22 . 51839 30: x4 - 15x2 - 20x + 13 d = -3926768 = - 24 . 19. 12917 31: x4 - 2 x3 + x2 - 8x + 4 d = -110848 = - 28 . 433 100

*t 32: X + 25x + 1 d 6170256 = 24 . 36 . 232 4 33: X x2 + 8 d = 123008 = 2 ( . 312 4 34: X + 14x2 + 8 d = 3442688 = 2 11 . 412 4 35: X + 4x3 - x2 - 10x + 2 d = 36992 = 27 . 172 4 35: X + x2 + 12 d = 424128 = 26 . 3 . 47 2 4 37: X - 8x3 + 4x2 + 83 d = -376663296 = - 28 . 3 . 19 . 83 . 311 4 Co U) X + 2x2 - 7x - 1 d = -81531 = - 3 2 . 9059 4 39: X - x3 + 4x2 - 3x - 10 d = -519471 = - 3 2 . 57719 4 40: X - 2 x2 - 6 x - 9 d = -170928 = - 24 . 32 . 1187 4 41: X - 46x3 + x2 - 2 x + 2 d = -478639504 = - 2 4 . 7 . 312 • 4447 4 42: X + 4x3 + 2 d = -25600 = - 2 10 . 5 2 4 43: X - 17x3 - 2 x2 + 2 x - 12 d = -340517072 = - 2 4 . 72 . 17 . 29 . 881 4 44: X - 5x2 + 3x + 55 d = 33107913 = 33 . 449 . 2731 4 45: X — 6 x2 + 12 d = 27648 = 210 . 33 4 46: X - 17x3 - 2x2 + x - 3 d -21574780 = - 2 2 . 5 . 1078739 4 47: X + 15x3 - 2 x2 - 4 d = -22961200 = - 24 . 5 2 . 137 . 419 4 48: X - 4x3 - 13x2 - x - 2 d = -1281951 = - 32 . 11 . 23 . 563 101

49: x4 — 4x3 + 4x2 + 100 d = 258560000 = 212 . 5** . 101 4 3 2 50: x - 4x3 + x - 18 d = -3026592 = - 25 . 33 . 31 . 113

DEGREE 5 5 3 2 1 : x + 3x — x + 1 d = 47504 = 2 4 . 2969 2 : x5 + 4x4 - 2 x3 + x2 - 4x - 44 d = -39666552128 = - 26 . 72 . 12648773 3:n x 5 - xBoSi. - 2x - 4 d = 1344384 = 2 7 . 33 . 389 4: x5 - 9x4 + x3 - 5x2 + 8x + 22 d = -173717180496 = - 2 4 . 33 . 31 . 97 . 173 . 773 5 4 3 5: x - x - 5x - 7 d = 12264308 = 2 2 . 74 . 1277 5 4 3 2 6 : x - x - 3x3 + x + 110 d = 440997986880 = 26 . 32 . 5 . 11 . 13920391 5 4 2 7: x - x + x - 12 d = 61896432 = 24 . 3 . 13 . 281 . 353 8: x5 - 4x4 - 5x3 + x2 + 3 d = -36227568 = - 2 4 . 3 . 13 . 58057 9: x5 - 3x4 + 34x3 + x + 3 d = 40853299968 = 28 . 38 . 13 . 1871 5 4 2 10: x D + 5x + x - 8 d = -427824864 = - 25 . 3 2 . 1485503 11: x5 + 5x4 - 2x3 - 118x2 + 4 d = -7675817905408 = - 2 8 . 37 . 103 . 223 . 35281 12 : x^ - 2 x3 - x + 6 d = 3521360 = 2 4 . 5 . 44017 R U 2 13: x - 8x + x + 4 d = -536184656 = - 2 4 . 72 . 683909 5 4 3 2 14: x3 - 5x - 5x - 4x + 12 d = -3979246704 = - 24 . 3 . 82900973 102

15: x5 - - 5x2 + 5x + 3 d = 1517913 = 33 - 17 . 3307 16 : x^ - 2 x3 + 13x2 + 3x - 2 d = -97743051 = - 33 . 7 . 277 . 1867 5 4 2 , 17: x - x - x + 4x - 15 d = 132742125 = 3 3 • 5 3 . 37 . 1063 18: x5 - 2 x3 - 13x2 + x + 1 d = -42551084 = - 22 . 10637771 5 4 3 p 19: x - x - 2 x - x - 6 x + 4 d = -11157484 = - 2 2 . 13 . 19 . 23 . 491 20 : x5 - 53x3 + 3x2 - 16 d = -11558138465344 = - 26 . 8539 . 21149539 5 4 3 2 21: x -6 x + 7x - x +4 d = -21525920 = - 2 5 . 5 . 13 . 79 . 13*. 5 4 22 : x3 - 4x + 112 d = 123431354368 = 216 . 73 • 172 . 19 5 4 3 2 3 : x -7 x + 2 x d + x - 1 d = 2438912 = 2 8 . 7 . 1361 24: x5 - x4 + 3x3 + 4 d = 179728 = 24 . 47 . 239 25: x5 + 24x4 + 4x 2 - x - 1 d = -2993183307 = - 33 . 563 . 196907 26 : x5 + 80x4 + x3 + x + 1 d = 829056786397 = 73 . 4157 . 581447 5 4 3 27: x3 + x + 9x -2 d = 23505732 = 2 2 . 32 . 652937 28: x5 + 34x4 - 10x3 - x2 - x + 5 d = 1437646980800 = 2 6 . 5 2 . 211 . 857 . 4969 29: x5 + 3x3 - 7x2 - 4 d = 9854432 = 2 5 . 7 . 29 . 37 . 41 5 4 2 30: x - x - 2 x + 2 0 d = 462792960 = 28 . 33 . 5 . 7 . 1913 31: x5 + 13x4 - 2 x3 - 6x2 - x + 3 d = 1355894016 = 28 . 3 . 131 . 13477 103

32 : x5 - 11x2 - 22 x - 31 d = 1968182793 = 34 . 24298553 33: x5 + 17x2 + 3x - 3 d = -460253988 = - 2 2 . 34 . 17 . 83561 34: x5 - 6x3 - x - 2 d = -4160432 = - 2 4 . 67 . 3881 35: x5 + 13x4 + 3x3 + 10x2 + 4x + 1 d = 224410852 = 22 . 2179 . 25747 36 : x5 - 12 x4 + 19x3 - 2 x - 2 d = -560570048 = - 2 6 . 83 . 105529 e; 4 3 37: x3 + x - 3x0 - 4x + 2 d = -1434204 = - 2 2 . 32 . 39839 38: x5 + 33x4 - 54x 3 + 4x2 + 4x + 4 d = -1957641147136 = - 28 . 7647035731 39: x5 - x4 - x3 + 4 d = 535056 = 2 4 . 3 • 71 . 157 40: x8 + 2 x + 8 d = 12808192 = 212 . 53 . 59 S 4 3 2 41: x +2 x - x" - x +10 x - 2 d = 16673688 = 23 . 37 . 953 42: x5 + 8x4 + 3x2 - 13x - 11 d = -20431469100 = - 22 . 3 . 5 2 . 7 . 67 . 145213 ^ 4 2 43: x + 5x - 2 x - x + 1 d = 325376 = 2 8 . 31 . 41 44: x 5 - 6x4 - 10x3 + 16x2 - 3x - 2 d = -346910720 = - 212 . 5 . 13 . 1303 R 4 2 45: x^ - x + 3x + 11 d = 56473725 = 3 . 5 2 . 72 . 112 . 127 46: x5 - x3 - 18x2 - 6 d = 1252129104 = 24 . 3** . 966149 47: x5 - 5x4 - x - 19 d = 5979807744 = 2 13 . 3 . 31 • 47 . 167 ^ 4 3 2 48: x3 - 2 x - 3x - x +2 x - 1 d = 246032 = 2 4 . 15377 104

49: - x + 4 10 d = 799744 = 2.11 .71 5 4 3 50: x3 - 2x + 2x° - 9 d = 21074661 = 36 • 28909

DEGREE 6 6 5 4 3 1 : x - 5x - 12 x - x3 - x - 1 d = 3184739584 = 28 . 13 . 956953 2 : x8 - 8x"* - x^ - 6x3 - 8x2 + 1 d = -2044169664 = - 26 . 3 . 10646717 6 5 4 3: x + x + 19x + I3x + 2 d = 7539666713632 = 25 . 59 . 3993467539 i> 6 5 0 4 2 _ , 4: x + x -2x + x +9x +6 in d = 3447038976 = 2 . 3 . 19 . 73 . 809 6 4 3 2 5: x - 3x + x + 13x + 2 x + 1 d = -3201966855 = - 3^ . 5 . 257 . 30763 6 4 3 6 : x - 2 x - 2 x - 6 x - 56 d = 27407390881088 = 2 6 . 59 . 7258313263 7: x6 + 18x5 - x - 1 d = 105767662133 = 73 . 308360531 6 K Jl 8: x - 25x - 2 x + 7x + 1 d = -42132378617784 = - 2 3 . 32 . 7 . 13 . 2099 . 3063583 9: x6 - 8x5 + 3 d = 66343862592 = 2 6 . 34 . 7 . 1828259 6 5 4 3 ? 10: x + 318x - 2 x - 17x3 - 4x - 8 d = 13671828044982429112384 = 26 . 11 . 192 . 257 . 209321386670923 11: x6 + 5x5 + 6x3 - 9 d = 510336605277 = 3 8 . 61 . 541 . 2357 12 : x6 - x5 - x3 - x2 + 743x + 1 d = 524684013122001354193 = 11 . 132 . 53 . 67 . 4561 . 17426400757 13: x6 + x5 + 12X1* + x2 - 19x + 58 d = -684478602794160 = - 2 4 . 32 . 5 . 23 . 41333248961 105

141 x 6 + 9x3 + 2x2 - x + 1 d = 350453328 = 2 4 . 3 . 19 . 199 . 1931 6 R 4 3 15: x + 3x + 53x - 2x3 + 4x - 1 d = 30576130300001 = 11 . 132 . 31 . 157 . 3379417 16: x6 - 21 x3 - 4x2 - 9x + 1 d = 402754158128 = 2 4 . 7 . 1439 . 2498971 6 4 2 h a 17: x - x — 11 x + 4x + 8 d = -10977107200 = - 28 . 5 2 . 439 . 3907 6 5 - 4 2 . 18: x + 26x + 3x + x - 3 d = 75468080721216 = 26 . 3 . 59 . 179 . 659 . 56477 19: x6 - 2 x5 - x4 + 28 d = -344094965760 = - 2 15 . 3 . 5 . 7 3 . 13 . 157 20: x6 - 3x5 - 8x3 - 16x2 - x - 1 d = 43436292676 = 22 . 7 . 53 . 29269739 21: x6 - I 8x + 1 d = 106288153344 = 28 . 36 . 29 . 41 . 479 22: x6 + x4 - 3x3 - 9 d = 5348282985 = 3& . 5 . 47 . 31219 6 4 2 23: x + 6 x - 10x + 4x + 1 d = 1091700672 = 26 . 3 . 631 . 9011 24: x6 - 23 x4 - 3 d = 4106531521728 r 2 6 . 33 . 292 . 414 25: x6 + 2x3 - 2x2 - 2x - 4 d = 146805056 = 2 6 . 2293829 26: x6 - x 4 - x3 - 136 d = 2187414096550720 = 26 . 5 . 172 . 227 . 347 . 467 . 643 6 5 _ 3 c 2 „ 27: x + 3x - 3x - 5x - 4 d = 1273917952 = 29 . 2488121 28: x6 -x 5 +x 3 -x2 -5 x - 1 d = 34856625 = 3 . 5 3 . 92951 29: x6 + 4X5 + 4x3 + 6 x + 1 d = 2752410368 = 2 8 . 23 . 643 . 727 30: x6 - 5x5 - x3 - 3 d = 4247545392 = 2 4 . 34 . 3277427 106

31: x6 + 2x5 - 27x3 - x - 2 d = 1143581951313 = 32 . 47. 2703503431 32: x6 + 2x3 + 2x2 - 48x - 4 10 d = 39180514106368 = 2 . 17 . 2250718871 33: x8 + 39x^ + 6x3 - 3x + 1 d = 15603349566384 = 24 . 36 . 73 . 18325147 34: x6 - x5 - x3 + 3x2 + 2 d = -4176832 = - 26 . 11 . 17 . 349 OE35: x ^ + 4x - . 4 d = 44302336 = 218 . 132 36: x8 + 2x - 4 d = 47975744 = 25 . 29 . 25849 37: x6 + x4 - 8x3 - x2 - 1 d = 251920384 = 218 . 312 38: x6 + 23x4 - 8x3 - 2x2 - 1 d = 205647496256 = 26 . 59 . 79 . 689389 39: x8 + 3x3 + 4x4 - x + 11 d = -7221549816 = - 23 . 36 . 132 . 17 . 431 40: x + x + 2x - 6 d = 305720016 = 24 . 3 . 73 . 31 . 599

41: x6 + 10x5 + 11x4 - 15x3 - x 18 - 3 d = -56732994609687 = - 33 . 112 . 2699 . 6434039 42: X6 + x5 - 15x4 + 3x3 + 2 d = -83617593088 = - 28 . 19 . 17191117 no 6 5 4 43: x - x + x + 4 5 d = -8568403833375 = - 37 . 53 . 83 . 89 . 4243

44: x8 + 16x8 + 8x4 - 20 d = 6598401859584000 = 216 . 32 . 53 . 8263 . 10831 6 *5 3 45: x + x + x + 16 d = -44696001280 = - 28 . 5 . 7 . 19 . 103 . 2549 6 4 46: x + 2x + 1 d = -222784 = - 26 . 592 47: x8 - 3x4 + 8x2 - 4 d = 94633984 = 218 . 192 107

48: x8 - 9x8 + x - 1 d = 1642894292 = 22 . 132 . 43 . 56519 6 5 49: x - x - x — 7 d = 884837408 = 25 . 7 . 13 . 303859 50: x6 + 7x5 + 4x2 + 12 d = 7581198476544 = 28 . 3 . 72 . 113 . 151357

DEGREE 7 7 R 4 ? 1: x - x - x - 6 x - 2 .4 „2 d = -5198231088 =-2.3. 36098827 7 6 4 2: x' + x - x - 9x - 1 d = 227516141817 = 36 . 312093473 7 6 „ 4 „ 2 3: x - x + 4 x + 4 x - 9 d = -396505651095 = - 34 • 5 . 13241 . 73939 4: x7 - x6 - x5 + 13x2 - 1 d = 697164500857 = 11 . 172 . 312 . 228203 5: x7 + 2x* + x2 + 4x + 1 d = -120830859 = - 3** . 1491739 6: x7 - 2x3 + x3 - x2 + 14x + 6 d = -6600481818008 r - 23 . 132 . 71 . 68760749 7: x7 + x6 - 2x + 4 d = -4855349952 = - 26 . 38 . 31 . 373 7 4 8: x' - 11x + 8 d = 68748120031232 = 217 . 524506531 9: x7 + 4x3 - 2x2 + 4 d = -2590054400 = - 211 . 52 . 50587

10: x7 - 7x5 + 81x4 - 3x3 - 3x + 3 d = -4017853065192751872 = - 28 . 3*1 . 17 . 211 . 54017899121 11: x7 - x8 + x2 - 4 d = -2260803696 = - 24 . 3 . 571 . 82487 12: x7 + 9x6 - x3 - 1 d = 242678250596 = 22 . 2207 . 4549 . 6043 x7 - 16x3 - 9x^ - x3 + 2x2 - 4x + 8 d = 15518031412195584 = 28 . 34 . 149 . 5022562781 108

14: x7 + 4x6 - 2x5 + 7x3 - 1 d = 75680926425 = 3 4 . 52 . 13 . 61 . 47129 7 6 5 4 3 2 15: x' + 3x - 2x3 - 3x - 2 0 x :> - x + 3x - 1 d = 16959056752576 = 26 . 3492 . 2175559 16: x7 - 5x6 + 4x5 - 3x3 - 9x2 - 2 d = -2325871559232 = - 26 . 32 • 13 . 107 . 2902927 7 4 3 17: x' - 5x - 13x^ + 2 d = 1911558437604 = 22 . 35 . 811 . 2424937 18: x7 + 3x5 + 2x3 - 2x2 + 7x + 6 d = -560182037184 = - 26 . 32 . 7 . 11 . 12630367 7 fi 5 4 3 ? 19: x - x + 4x + 3x - 17x + x + x - 1 d = 3027047559957 = 33 . 233 . 11597 . 41491 7 6 4 20: x + 7x - 2x + x + 2 d = -1055537955963 = - 33 . 39093998369 21: x7 - 11x - 2 d = 909140743424 = 28 . 317 . 11202937 7 fi 5 4 3 22: x + x -x +x + 6x - 21x + 45 d = -5799659055257088 = - 29 . 35 . 7 . 6659293999 23: x7 - x3 - 4 d = -3373121536 = - 214 . 205879 24: x7 + 4x3 + x2 + 3 d = -3277383363 = - 34 . 1609 . 25147 25: x7 - 10x3 - x - 1 d = 69273717993 = 33 . 73 . 191 . 184013 26: x7 - x5 - 4x3 - 5x2 + 8 d = 436582899872 = 25 . 7 . 1021 . 1908943 7 6 5 4 3 2 27. 1 - 7x - 5xJ - x - 2xd - 2x + 32 d = 2733959029419409408 = 218 . 653 . 16369 . 975701 7 R 4 3 ? 28: x — x + 2x + - 3x + 3x + 1 d = -217906876 = - 22 . 11 . 23 . 163 . 1321 7 6 2 29: x — 4x + 2x + x + 2 1 n d = 22110467072 = 2 IU . 53 . 407401 30: x7 - 7x8 + 6x3 - x - 4 d = 570174233408 = 26 . 132 . 52715813 109 7 R 4 2 31: x - 8x3 - x + 3x - x - 1 d = 52021051344 = 24 . 32 . 71 . 1297 . 3923 7 5 4 3 32: x + 2x + 9x — x + 1 d = -43143233984 = - 26 . 131 . 5145901 33: x7 + 5x^ - x3 - x4 + 73x3 - x - 1 d = 3846731704034325 = 3 . 52 . 2621 . 5843 . 3349097 34: x7 + x6 + x5 + x4 + 2x3 + 3x - 1 d = -125908672 = - 26 . 1967323 35: x7 + x6 + x5 - 9x4 - 2 d =' -313799013888 = - 29 . 3 • 204296233 7 6 ^ 4 3 3 6 : x + x - 3x + x - 2 x + 1 2 d = -13044811567104 = - 2 12 . 39 . 239 . 677 0*737 : x 7 + 3 -x 6 - x 4 + x2 -8 d = 2085742999968 = 25 . 3 . 17 . 13007 . 98257 38: x7 - 2x3 + x4 + x3 + 8x2 - 5 d = 337348257280 = 29 . 5 . 10111 . 13033 7 6 5 39: x — x + 5x — 1 d = -874820704 = - 25 . 127 . 215261 40: x7 - 8x6 + 3x4 - 7x2 - 1 d = -7198249341955 = - 5 . 73 . 4197229937 41: x7 + 3x3 + x2 + 10x + 4 d = -574384035132 = - 22 . 32 • 313 . 50974799 42: x7 - 5x5 + 2x3 - 4x2 - x - 1 d = -29885657600 = - 29 . 52 • 101 . 23117

43: x7 - 16x3 - x4 + x3 + 4x + 4 d = 720260585890832 = 24 . 7 • 5927 . 1085017393 7 R 3 ? 44: x — 5x — x — x — 7x + 4 d = 2008487309517 = 33 . 132 .440168159 45: x7 + x6 - x5 - x2 + 154x + 11 d = -95558751252182109375 = - 33 . 57 . 11 . 23 . 17905899*101 ,.£ 7 6 4 2 , . 46: x + x + x - x + 4 d = -4099149552 = - 24 . 3 . 83 . 1028903 47: x7 - 2x5 + 2x3 - 12x2 + 22 d = -15587479157184 = - 26 . 32 . 11 . 2161 . 1138429 110

118: x7 + 37x^ - x3 + 4 d = -419953377321145296 = - 2 4 . 17 . 23 . 6712809739841 49: x7 + x4 + x3 - x2 + 4 d = -2343021312 = - 28 . 3. 3050809 50: x7 - 4x6 + 2x5 + 21x4 - 8x3 - 3x2 - 11x - 2 d = 845075974893136 = 2 4 . 7 . 29 . 37 . 7927 . 887093

DEGREE 8

1: x8 + 2x7 - 9x4 + x2 + 1 d = 2734504749056 = 2 11 . 1335207397 8 7 6 5 4 3 2: x — x — x — x — 5x - xJ + 2x + 2 m p d = 240215475200 = 2 . 5 . 43 . 67 . 3257 8 3 3: x + x + x - 21 d = -30221131951192068 = - 22 . 33 . 307 . 13693 . 66565621 8 7 I 4 3 4: x - 2x - x + x - 4x + x + 1 d = -20123573823 = - 35 . 82813061 5: x8 + 12x7 - 7x3 + x + 1 d = -1151466055965152 = - 25 . 331 . 108710919181 6: x8 + 2x7 - x4 - 7x2 - 4 10 d = -8672259341312 = - 2 . 7 . 229 . 277 . 19073 7: x8 - 2x7 + 2x6 + I4x2 + 4 d = 1123135111168000 = 217 . 53 . 7 . 19 . 107 . 4817 8: x8 - x8 + 5x4 - 10x3 + 4 90 d = -63448504336384 = - 2 . 4691 . 12899 9:n x 8 - x 5 - x 2 +X+16 , , d = 4545407897334148 = 22 . 13 . 23 . 1291 . 2943848393 10: x8 _ x6 - 2x3 + x2 - 9 d = -72240095695104 = - 28 . 3? . 31 . 1011426071 11: x8 - x7 + 4 d = 271504674816 = 2 12 . 3 . 3023 . 7309 12: x8 + 4x8 + x1* - 23 d = -185902242613624832 = - 216 .233 . 152692 13: x8 - 2x5 + x3 + 4 d = 603769370256 = 2H . 33 . 132 . 37 . 397 . 563 111 8 6 5 4 3 14: x - 2x + 2x - 6x + 14x + 2x + 1 d = -153687145371392 = - 28 . 600340411607 15: x 8 - x 7 + x 4 - x 2 +5x-1 d = -212342691760 = - 24 . 5 . 2654283647 8 3 c 2 16: x + x + 5x - x - 1 d = -103078125855 = - 3 4 . 5 . 1471 . 173021 17: x8 + 2x7 + x6 + 11x4 + 3x2 + 2 d = 55226502485504 = 29 . 73 . 314473069 18: x8 - x8 - 8x4 + x2 - 36 d = -6432201850519102464 = - 210 . 32 . 172 . 4612 . 33712 19:•in x 8 + x 7 -13 x 6 - x 4 + . 3 6x - 2 x - 0 2 d = -1291634928804744 = - 23 . 33 . 11471 . 521296429 20: x8 - x7 + 4x8 + x8 + x3 - x + 7 d = 307797655359488 = 212 . 7 . 10735130279 21: x8 + 5x6 - x4 + 9x3 + 28 d = 1318933093639599760 = 24 . 5 . 72 . 317 . 2543 . 417379463 22: x8 - 11x7 + x2 + 3x - 6 d = -8191786723081702656 = - 28 . 3 . 23 . 47 . 71 . 12907 . 10767331 23 : x8 - x7 + 9x5 + 5x3 -I6x2 - 8 d = -94819224969652672 = - 26 . 293 . 12007 . 421128173 8 7 4 3 24: x - x + x + x + x + x14 + 1 d = -1177050834606384 = - 24 . 35 . 53 . 71 . 80451611 25: x8 - 2x6 - 4x2 + 4x - 3 d = -166135595008 = - 218 . 633757 26: x8 + 3x3 + 3x2 + 9 d = 112256547264765 = 311 . 5 . 271 . 467669 8 4 27: x + x + 4 d = 212336640000 = 222 . 34 • 54 28: x8 + 5x6 - x5 - 6x3 + x2 + 3x + 1 d = 1096508613888 = 28 . 33 . 79 . 2008081 29: x8 + 2x8 + 8x3 - x2 + 6x + 2 d = -13916763698688 = - 29 . 33 . 31 . 32474527 30: x8 - 4x7 - 2x6 - 8x5 - x4 + 12x2 + 4 o h d = -25466343683784704 = - 2 . 1517912369 112

31: x8 + 3x6 - x4 + 1 d = 2792911104 = 28 . 34 . 3672 32 : x8 - x7 + 7x5 + x3 - x + 1 d = -558527336384 = - 26 . 8726989631 33: x8 + x7 - 2x5 - 5x3 - 3 d = -2299890473712 = - 24 . 3 4 . 13 . 367 . 371957 34: x8 - 2x7 + x8 - x4 - x3 - 3x + 2 d = -70576762131 = - 34 . 17 . 51254003 35: x8 + 2x7 - 2x8 + 2x^ + 2x4 + 5x3 + x2+ 15x + 4 d = -24968482459183260 = - 22 . 34 . 5 . 29 . 531470465287 36: x8 + 14x7 - 6x6 - 7x5 + 12x2 - 12 d = -1790258703436151725824 = - 28 . 34 . 1987 . 43450316317157 37: x8 - x2 + 23 d = 57122501629280000 = 28 . 54 . 23 . 312 . 40192 38: x8 - 2x7 - x8 + 8x3 + 2x4 + x2 - 6x + 1 d = -22727508955136 = - 212 . 5548708241 8 c ii 39: x + 36x -x - 2 d = -3808276944811720704 = - 220 . 38 . 191 . 1549 . 1871 8 7 4 40: x - x ' - x - 225 d = -493339685489596386984375 = - 36 . 56 . 7 . 6187289804298289 8 7 k UP 41: x - 11x' + x3 + 2x + x + 10 d = -177868798811823949440 = - 27 . 3 . 5 . 13 . 83 . 359 . 239156753987 42: x8 + 2x3 - 9 d = -80246653634304 = - 28 . 37 . 192 . 397037 8 7 6 R U ? 43: x + x + 2x - x - 2x + x 18 + 1 d = 2316704868956900 = 22 . 52 . 23 . 1007262986503 44: x8 + 2x8 - x4 + 4x3 - x2 + 11 d = 326991092310784 = 28 . 11 . 599 . 193854751 45: x8 - x7 + x4 - 2x3 + x + 4 d = 165969860704 = 25 . 47 . 617 . 178853 46: x8 - 2x7 + 8x8 - 2x5 - x3 - 4x2 - 2 d = -29595878958044 = - 22 . 72 . 8783 . 17192233 113

47: x8 + 2x7 - x8 + x3 + x2 + x - 1 d = -4408033628 = - 22 . 23 . 37 . 1294957 48:n D x 8 + x 7 + x 4 + x 2 + 0 8 d = 37544054803296 = 25 . 3 . 19 . 29 . 709771151 49: x8 + 16x7 - 12x6 - 4 d = -22112358902609739776 = - 234 . 2137 . 602297 50: x8 + x8 - 4x9 + x3 + 10 d = 831376444382100 = 22 . 33 . 52 . 307917201623

DEGREE 9

1: x9 - 4x7 - 9x6 - 3x5 - 4x4 - 2 d = 8163572440527504 = 24 . 37 . 7 . 11 . 13 . 23 . 10133269 2: x9 - 6x7 - 2x8 - x^ - x + 1 d = -34089388070768 = - 2 4. 263 . 751 . 2417 . 4463 3: x9 - x8 - 3x5 - 2x4 - x3 + 7 d = -3329113669905163 =- 73 . 192 . 409 . 1213 . 54193 4: x9 + 4x8 - x5 - 2x2 + 14 d = 492639890209806811136 = 216 . 7 . 191 . 431 . 13044906383 5: x9 - 2x8 + 2x6 - x4 - 28 d = 151311032449123205120 = 2 14 . 5 . 73 . 11 . 47 . 181 . 57546301 6: x9 - 7x8 + 16x5 + 5x3 + 5 d = -1415763450295317500000 = - 25 . 57 . 13 2 . 137 . 757 . 853 . 37879 9 6 5 7: x* + 2x + 3x3 + 20 d = 13536012326976000000 = 212 . 39 . 56 . 10745323 8: x^ + x8 - x8 - 8 d = 6096344194220032 = 221 . 73 . 39821417 9: x9 - 3x8 - 4x7 - x8 - x2 - 2 d = 1020469945029656 = 23 . 113 . 73 . 313 . 4194353 10: x9 - x7 - 12x5 + 17x4 - 11x3 + x2 - 20 d = -2651743916340839419680 = - 25 . 34 . 5 . 7 . 53 . 551509083795223 114

11: x9 - x8 + x7 + 6x5 + 1 d = 7029184115204 = 22 . 31 • 43 . 2693 . 489529 12: x9 - 2x8 + 4x7 - 15x6 - x5 + 4x4 - x2 + 4x - 8 d = 1652023828330959177472 = 28 . 72 . 29 . 31 . 3821 . 5521 . 6944257 Q 8 4 13: x + 2x - 2x + 2x + 8 d = 5078707733499904 = 212 . 7 . 177131268607 14: x9 - 4x5 - 6x4 - 4 d = 5610073389334528 = 216 . 67 . 599 . 2132981 15: x9 + 2x5 - x2 + 4 d = 54388910313104 = 21* . 3399306894569 16: x9 + 2x - 4 d = 25398579101696 = 216 . 43 . 1571 . 5737 17: x9 - x5 - x2 + 9 d = 16425668423904660 = 22 . 32 . 5 . 31 . 5701 . 516342427 9 8 n 4 3 2 18: x -x - 9x -x +x +1 d = -*131) 13*1800918208 = - 2 . 13 . 1571 . 3321*12989 19: x9 - 2x5 + s* + 8 d = 108171966*16*100000 = 2 10 . 55 . 97 . *191 . 1109 20: x9 . x8 . x7 + x6 + 3x4 _ 2x3 + 8 m p d = 9637841074148352 = 2 . 3. 13 . 3121 . 25775089 9 8 6 5 4 8 2 21: x* - 3x - 2x + 11x3 - x + 2x5 + 3x - 12 d = -18138017717788683312 = - 2 4 . 33 . 13 . 557 . 809 . 887 . 1049 . 7703 22: x9 + x7 - 3x6 + 8 d = 5310189813366784 = 218 . 20256766561 23: x9 - 3x8 - 5x6 + 11x5 - 5x2 + 4 d = -74178911003452272 = - 24 . 33 . 337 • 349 . 2917 . 500501 24: x9 - x7 - x8 + 4x8 + 1 d = 126217379984 = 24 . 9787 . 806027 9 6 5 r- 25: x + x+ x + 5 d = 168970297550000 = 24 . 55 . 7643 . 442157 9 7 4 26: x* - 15x - x - 1 d = -126654601223629936 = - 24 . 192 . 21927735668911 115 9 4 3 27: x - 2x - 10xJ + x - 2 d = -4226359718084608 = - 2 15 . 13 . 79 . 125587403 28: x9 + x8 + x8 - 9x8 - x4 - x3 - 4x2 + 10x + 1 d = 72420805852635200 = 26 . 52 . 10631 . 4257643087 9 8 5 4 29: x — x — 3x + x + 7x - 1 d = 76155079278848 = 28 . 29 . 31 . 330901867 9 8 7 6 5 2 30: x - 2x - 2x + 7x - 2x + 2x - 1 d = -10847068246179 = - 33 . 11 . ^19 . 87164953 9 7 4 31: x* + x' + 10x + 1 d = 794887891044381 = 33 . 37 . 113 . 127 . 55444469 9 8 7 6 5 32: x — x + x + 3x + 7x + 3x - 2 d = 128891680872208 = 24 . 31 . 479 . 727 . 746231 9 8 6 5 j, 4 „ 2 . 33: x - x +x -x -4x -3x -1 d = 484835724544 = 28 . 43 . 44043943 9 6 4 3 34: x — 2x — x — 11x — x + 1 d = -4793673649937751 = - 36 . 337 . 1487 . 13122001 35: x9 + x7 - 2x8 + 23x + 4 d = 36741982269514454784 = 28 . 31° . 199 . 12213974089 36: x9 - 2x5 + 17x3 + 4 d = 2523777579270487040 = 210 . 5 . 10883 . 45293146049 37: x9 - 4x6 - 5x5 - x3 - 2x - 4 d = 606255625159680 = 210 . 3 . 5 . 127 . 1489 . 208721 38: x9 - x7 - x4 - 4x3 - 18 d = 4032656973837451584 = 26 . 311 . 433 . 821466031 39: x9 - x5 - 4x4 - 3x - 2 d = 2975154796800 = 28 . 33 . 52 . 613 . 28087 9 8 6 5 2 40: x + 2x - 4x - x D + 12x - 1 d = -21232417333614327 = - 35 • 89 . 449 . 2186536949 Q ? 41: x - x + 4 d = 25389975990416 = 24 . 1586873499401 42: x9 + 12x6 + x5 + 18x3 - 6x - 84 d = -127174591125046971334656 = - 219 . 34 . 29 . 43 . 79 . 587 . 2029 . 25523 43: x9 - 2x3 - 10 d = 37380815198265600 = 28 . 39 . 52 . 233 . 293 116 Q il p 44: x + x + x — 7 d = 2230770345951525 = 3 . 52 . 7 . 13553 . 313516297 45: x9 - 9x8 - 9x7 + 6x6 + x3 - 2x2 + x + 2 d = -2731285288101884607 = - 32 . 6449 . 47057860617527 46: x9 - 4x4 - 2x3 - x2 - x - 1 d = 55136449952 = 25 . 1723014061 47: x9 + x8 + x7 + 5x6 - x5 + 3x4 + x2 - 2 d = -49127736596472 = - 23 . 32 . 17 . 1283 . 31283741 48: x9 + 3x8 - 9x5 + 1 d = -590347823864832 = - 210 . 39 . 11 . 61 . 43651 49: x9 + x6 + 11x5 - 2x4 + 2x3 - 4 d = 540436174847103232 = 28 . 2111078807996497 9 8 6 4 3 50: x* - 2x - x - 2x - x3 + 1 d = -142415611648 = - 28 . 67 . 443 . 18743

DEGREE 10

1: x 10 - 4x8 - 2x5 + 2x3 + 2 d = -2934068108800000 = - 212 . 55 . 41 . 5590831 2: x10 + x8 + 3x5 + x3 - x2 + 4 d = -157351512414496 = - 25 . 883 . 1181 . 4715311 10 9 7 5 4 2 3: x - 2xy - 3x - x - 3x + 3x + 1 d = 7608627756001504 = 25 . 23 . 41 . 252141693929 4: x 10 - x7 + x^ + x4 - 4x3 - x2 - 1 d = 80628374381764 = 22 . 11 . 1832463054131 5: x10 - 6x9 - x8 + x9 - 2x3 + 39x2 + 4 d = 5925644424767376189347578000 = 24 . 53 . 372 . 1229 . 7237 . 243327776868997 6: x 10 - 12x8 - 6x7 + 5x4 - 8 d = 4552430310015098968604672 = 230 . 72 . 379 . 3181 . 6091 . 11783 10 9 o 8 4 2 7: x - x + 2x - x + x + 4 d = -2751074207720656 = - 24 . 41 . 43 . 97528155407 10 7 5 4 2 8: x + 11x — 3x° - 2x + x^ + 1 d = 921050792795607993 = 33 . 732 . 6401387188171 9 „ 6 n 4 ,.2 _ x + 7x + ox + 4x - 3 14932884730561706325 = 3 5 . 2521 . 9613 . 8215815187 7 5 4 2x + 2x3 - 2x - 4 ~18 29422746827227136 1223 . 4091 . 22433 Q 7 5 4 ? 4x* - 2x' - 2x + 2x - x - 3 319856747625725952 = 21V 3 67 . 233 . 1259 . 331099 3x9 - x8 + x7 - 1 3 c3 47693252125125 = 3' 5" 17 . 2389 . 347951 6 5 c 4 . 8x x - x - 5 x + x - 1 11 57207790282504192 = 2 73 382650566423 8x8 - x3 - 4 1180822246261932450000 4 5 2 .3 .5 .1 1 . 17 . 41 401 . 2560492049 4x9 - 8x^ + 5x^ + 1 10 3 130102678596926464 = 2 11 13 23 . 228578671 x9 - 4x4 - 40 24 2737015272244619771904000 = 2 .3.5. 16112476350317 4 3 0 2 c x - x + 3x + 5 6 -26467503658307955 = - 3 23 . 315709472873 5 lx° - 1 4083940361328125 = 51° . 535 x8 + 3x7 - 3x6 - 2x3 - 4 10 116928766995108864 = 2 3 47 . 809845737721 18x9 + 8x + 4x3 - x2 - 2 11 37924204641383328692224 = 2 , 1512 . 1531 . 530465866373 2x9 - x8 - 20x3 - 4x2 + 2 20 -701575551026472157184 - 2 271 4663 . 529468133 x9 + x7 + x4 - 3x3 16 ,6 -830422470211002268416 - 2 3" . 839 . 5303586270581 x9 - 10x8 - 8 24 1448591430595865554714624 = 2 . 67 . 2203 . 584974205089 x7 + x5 - 2x3 + 6x2 +1 -4071834089490880 = - 2° . 5 . 37 . 8599 . 39993593 x7 + 2x6 + 7x5 - x4 - x3 - 2 112.016194701722944 = 25 . 6301 . 277773852121 118

26: x10 - 2x8 - x7 + 8x3 - x - 1 d = 8368593247085536 = 25 . 29 . 229 . 39379391503

27: x 10 - x8 - 4x7 + 4x5 + 18x 3 - 9 d = 11275342948924630327296 = 213 . 313 . 149 . 5793983269 28: x 1^ + x8 + x3 + 8 d = -1382572774566419904 = - 26 . 3 4 . 13 • 311 . 1747 . 37759511 29: x 10 - x8 - x5 - x2 + 4 d = -892757841418544 = - 24 . 13291 . 4198131449 10 9 0 7 2 . 30: x + x - 3x + x- 3 d = 1150207907184189 = 32 . 72 . 29 . 89937282601 31: x 1° + x 4 - 4x 3 + 30 10 3 2 d = -866387480140800 = - 2 . 3 . 5 . 4261 . 294169 32: x10 + x5 - 2x5 + 7x2 + x - 1 d = 22493587410651861 = 33 . 7 . 491 . 2243 . 2843 . 38011 33: x 10 + x8 + 2x7 + 2x6 + 14 ?0 ^ d = -405326282624978649088 = - 2 .7.11.47. 44486077 34: x 10 - 2x9 - 3x7 - x5 + x4 + 2x - 2 10 d = 2908628476396544 = 2 . 11 . 251 . 1028778521 10 8 Q 4 _ 3 35: x + x - 8x + 3x - 1 d = 17138886545188093 = 72 . 1453 . 240724841569 36: x 10 - 3x8 - x7 + x6 - 4x4 - 2x2 + 12 d = -144561969655106955264 = - 211 . 32 . 349 . 22472747292473 37: x 10 - x5 + 6x4 + 9x3 + 4 d = -2144272938024359664 = - 2 4 . 35 . 31 . 1439 . 12363212117 38: x 1° - 2x o 8 - x 5 - , 3x 3 + 1 n d = 9518088349264 = 24 . 112 . 71 . 69244619 10 9 39: x - 2xy - 15 d = 1401179925081600000000 = 215 . 39 . 58 . 19 . 292711 40: x 10 + 130x9 + 35x8 - 2 d = 133604118505573165711360000000000 = 223 . 51° . 11 . 7247 . 20458743426449 41: x 10 - x9 - x4 + x2 - 16 d = 746265395457854858048 = 26 . 491 . 2273 . 10447981667399 119 10 42: x + x8 -3 d = 186227224685568 = 210 . 37 . 11 . 829 10 o a 5 4 ? 43: x 2x* - 2x + 2x3 + 2x - x + 3 10 d = 93527402255956992 = 2 3 . 61 . 499100293801 10 44: x + x8 + 9x7 + 8 18 18659157623868217360384 = 2 29 . 41 . 598646236893^9 10 9 c 8 7 45: x + x - 5x - x - x - 1 d = 801819351827725 11 416529533417 10 45: x 5x5 - x + 1 d = 40555152154864 = 2 97 26130897007 10 Q ft 7 R i 4 47: x + 7x* - 2x - 2x - 3x3 + x + 1 6 d = 224020448478417789 = 3 11 , 23 . 67 . 18128622691 10 48: x x7 + 7x6 - x5 + 4 d = -2839427252886389760 10 = - 2 3 . 5 . 7 . 449 9769 2006891 10 49: - 20x - 4 28 .10 d = 7836640215040000000000 = 2 13 19 10 8 50: x - 2x + 118 d = -42405704227823838904073060352 19 7 ? = - 2 11 59 . 607

DEGREE 11 11 10 7 c 5 4 1 : x + x - x + 5x - x + 4 x + 2 -4036590095161347248 = - 2 f . 13267 . 388084107641 H 7 „ 6 c 2 2: x - x - 4x - 5x + 1 2 d = 542999077631706196 = 2 139 . 167 . 307 . 19048880339 3: x11 - 7x10 - x7 - x3 + x - 1 6 d = -16204823981038747840 = - 2 5 . 929 . 54510306717703 x 11 - 2X4 - 18 d = -1018695971808021668170752 10 = - 2 3 . 2087 . 3319 . 9013 . 21858383 11 10 8 7 6 5 4 x + x x + 2x + 12x - 3x - x - 1 d = 167035597068830531472 71 . 109 152789210807 120 11 JO „9 6 5 6: x +2x + 12x -x +x -1 d = -1033009539715676299712 = - 26 . 13 . 9463 . 131205537827957

7: x11 - x9 * 2x8 - x3 + x + 2 pn d = -7869642239377408 = -2.7. 1237 . 866737 >1 H 10 I. 9 ~ 2 „ 8: x + 4x + 4x + 2x - 4 d = 706514492823207936 = 215 . 3 . 7 . 1026719582437 11 10 ,,8 , 4 , 9: x - x + 11x + 2x - 1 d = 183335886923985645325 = 52 . 73 . 21380278358482291 10: x11 - 2x10 - 2x8 + 2x7 - x4 + 9x + 2 d = 3688258488487862189157 = 35 . 103 • 10499 . 14549 . 964709983 11: x11 + 2x9 + x7 - x6 +3x5 + 5x3 - 1 d = -2284669796782940 = - 22 . 5 . 73 . 333042244429 12: x11 - x9 - x6 + x5 - 9x4 - 2x3 - 6x- 2 d = 132504343679570624000 = 29 . 53 . 103 . 20100780291197 11 10 6 , 13: x - x + x + x - 6 d = -17856910458788762336 = - 25 . 3593 . 155309894750111 11 9 c 6 14: x + x + 5x + 1 d = -8433211061358752 = - 25 . 172 . 911895659749 15: x 11 + x5 - 4 d = -299171007647399936 = - 214 . 73. 13121 . 19063813 16: x11 - 4x10 - x9 - 4x7 - 2x6 - 5x3 - 4 d = -570462059845070712832 = - 212 . 53 . 2627791770365339 11 10 7 , * 4 „ 2 „ 17: x + x + x +16x -4x - 4 d = 292035433284267650895872 = 212 . 1193 . 4583 . 9619 . 15331 . 88427 11 10 _ 9 „ 18: x + x - 2x +4 d = -8383153440577028096 = - 220 . 1163 . 1319 . 5211743 I1_4 2 n 19: x - 3x + x - 9 d = -1002564504309217267971 = - 3 11 . 7 . 19 . 47 . 193 . 277 . 523 . 32381 11 8 7 0 6 „ 20: x + x -x +2x -4 d = 322242900676071424 = 212 . 7 . 239 . 311 . 151205323 121 11 10 « 8 21: x x - 2x x"* - x3 - 3x - 5 d -16585837714991492176 = - 2 . 37 . 463 . 60511053481231 11 22: x 2x8 - x3 + 10 29 d -1763387648410176716800 - 2 17 . 127 . 60853459 11 10 9 « 6 _ 23: x x + x + 8x + 2 d -47347544879495920384 8 - 2 13 . 41' 107 . 701 . 112835209 11 8 24: x - x x5 - 4 8 d = -299260322736930560 = - 2 5 . 71 . 547 . 6019958471 11 9 „ 2 „ 25: x - x + 4x - 1 d = 6490892275205481 = 39 . 11 132 . 229 . 433 . 1789 11 0 4 0 3 0 26: x + 2x - 3x + 2 14 d = -3003185602019328 = - 2 3 112 . 504958409 11 _ 8 „ 7 6 _ 5 4 27: x - 2x - 2x - x + 2x + x - 4x3 + x 5 d = -31234134369236443424 = - 2: 13 . 75082053772202989 11 28: x 2x10 -t x9 + 2x5 - 10x2 - 2x - 4 d -463959197860990275584 - 2 12 . 7 . 232 . 5471 . 5591127733 11 29: x 3x7 - 4x4 - 10x3 + x2 - 4 d -500187760875643871536 - 24 . 11 . 269 . 317 . 859 . 38798567123 11 30: x x8 - 2x2 + 4 d -281709406834688000 = - 215 53 . 7 11969 . 820891 11 9 8 4 3 31: x 2x - 2x + x - 3xJ + 21 d = 6870397184989222799529216 = 28 . 33 . 72 . 107 . 181 . 761 . 7187 . 191508203 32: x 11 - x6 - 2x3 - 12x2 - 6 d = -10267033312770521760000 2 2 - 2 8 11 . 23 101 . 311 . 394019 11 10 33: x 2 x ,w - x6 - 3x5 - 2x3 - 16x - 1 d 916197075158055934554880 28 . 5 . 17 . 73 . 421 . 5507 . 248776857473 11 34: x x9 + 4x7 + 3x5 - 2 10 d -851735624364887040 = - 2 659 . 28048324757 -242703131865088 = - 212 . 59253694303 x8 + 4x7 + x3 - 2x - 1 -418580203999232 = - 212 . 11 . 9290221147 x 10 _ 4x9 - 2x8 + 24x7 - 9x3 + 2x - 1 -1149472542262886144256744 - 23 . 35 . 7 . 1579 . 53496106035625867 4x7 - x4 - x3 + 1 10 -1503067917104128 = - 2 1 . 47 . 163 . 191598977 x6 - x4 - x3 - 2x + 4 -380960878607365376 = - 28 . 109 . 3217 . 4243877657 , 7 ~ 6 „ 2 _ 6x + 2x - 7x +3 -47539297209195640191 - 3 . 7 . 192 . 73 . 313 . 2243 . 122357273 2x9 + x5 - 3x3 + 4 594935500890312704 = 212 . 43 . 3377858721443 x10 - 2x2 - 2x + 1 1385015474426125 = 53 . 31 . 509 . 702206971 , 10 87 „ 6 , 3 . 6x + 11x + x + 2x - 6x + 1 29609203911169503232 = 212 . 59 . 122522195739413 10 c 8 6 4 3 - x - 5x - x - 12x - x - 1 -282499612729731956736 - 2 14 . 32 . 521 . 12161 . 302376751 10 „ 9 5 2 „ x - 3x + x + x + 4 -51857210865112158032 - 24 . 17 . 197 . 337 . 2871733427729 11x10 + 3x9 + 8x8 + 8 294914995051773058995919519744 24 2 . 701 . 25076039256771779009 5x10 - 2x8 + 3x - 1 288945944853901791232 = 212 . 72 . 131 . 10989787126943 „ 10 , 5 0 3x + 3x + 3 99181726041310137936 h m ? 2.3. 19 • 1879 . 12071 . 12821 49:)in x 11 + 3x „ 10 - 5x c 7 + x 4 + 3 d = -43906120270466842431 = - 33 . 192 . 5233 . 860802187381 50:Cn x - x 10 - x 4 - 4 „ d = -341260591311208448 = - 214 . 11* . 172139615807

DEGREE 12 12 „ 11 „ 5 4 , 1: x + 4x - 4x + x - 6 d = -221957634644694119158382592 = - 231 . 35 . 233 . 307 . 5946201913 - 12 11 Q - 2: x + x -8x+1 d = -19530947756042927118675 = - 32 . 52 . 53 . 5639 . 7523 . 38607508363 3: x 12 + 3x10 - x6 - 20 d = -13273888502679815179468800000 _ _ 222 _ 3 12 ^ 55 _ 232^ ^ 2 ^ ^ ^ 2

4: x 12 - x8 + 3x8 + 6x - 2 d = -837353634232539425328 = - 2H . 3 12 . 12743 . 14321 . 539621 _ 12 _ 10 „ 8 7 c 5 , 4 _ 5: x - 5x + 5x- 7x + 5x + 7x +3 d = -3327062846165595148394943 = - 36 . 307 . 14866033280007842381 12 10 8 7 , 6 4 6 : x - x -x-x+3x-x-3 d = -18894210240133738791 = - 35 . 312 . 80909418944317 7: x 12 +5x c 8 +6xc 5 + x 4 - x+1 d = 38027518751976854397 = 3 . 112 . 19 . 29 . 1523 .124836005003 8: x 12 - x8 + 4x5 - 2x4 - 4x - 1 d = 3553760306251431936 = 221* . 35 . 11 . 113 • 701279 9: x 12 - 2x8 + 2x6 - x5 + x3 + 4 d = 43769964986289981200 = 24 . 52 . 2089 . 52381480356977 10: x 12 + 3x^ + 2x + 3x8 - x^ - 7x2 + 4 d = -57141601700219289689168 = - 24 . 292 . 412 . 1571 . 2399 . 670289297 124

12 q 10 8 _ 5 , 11: x + 8x + x + 2x + 1 d = 1092246097366978449408 = 2 12 . 32 . 971 . 30513976984207 12: x 12 + 4x5 + 32 d = 321236327976153847940994039808 44 = 2 . 17 . 467 . 2707 . 849670981 12 11 c 7 0 5 13: x - x - 5x + 2x - 1 d = -710612002129428736 = - 28 . 8713 . 318584658937 12 10 9 7 6 5 14: x + X + X - X + X - X + X + 1 d = 336395975168768 = 28 . 19 . 69160356737 12 „ 11 _ 4 - 2 15: x - 4x - 2x + 2x + 1 ?4 d = -174238135503944679424 = - 2 . 157 . 223 . 1093 . 271393 12 11 8 7 _ 6 _ 2 16: x +x -x +x +3x -3x +x+1 d = -28843393458924163 = - 72 . 19 . 67 . 462404307019 12 9 5 - 4 2 _ 17: x + x - x + 7 x + x +2x-2 d = -947490992579488286052 = - 22 . 33 . 31 . 109 . 4492 . 12878653561 18: x 12 -x 10 - .3x 8 +2x . 7 + 6x - 5x +x 3 +1 , d = -2186477605392759 = - 32 . 73 . 1427 . 496345891 19: x 12 - 2x^ - x8 + x8 - 2x3 - 2x + 1 d = -7053413200805888 = - 214 . 73 . 163 . 2647 . 2909 12 11 10 9 - 7 6 20: x -x -x -x -2x +x + x- 3 d = -141681677042500751360 = - 212 . 5 . 113 . 751 . 983 . 3593 . 23081 21: x 12 - 3x10 + 2x7 - 4x5 - 4x4 + x3 + 1 d = 25247845303919216725 = 52 . 1009913812156768669 12 9 5 3 22: x - 2x - x - x - 1 d = -711025765223756 = - 22 . 127 . 1039 . 6857 . 196459 12 7 6 „ 23: x + x + 4x + 4 d = 1168640576603410432 = 2 12 . 499 . 571768819183 24: x 12 + 3x5 + 6x2 - 1 d = -79609893458936821875 = - 313 . 55 . 43 . 127 . 1093 . 2677 12 9-6 U 25: x + x* + 3x° + i2x4 + 8

d = 64757227070539014340608000 = 221 . 312 . 53 . 234 • 43 . 38629 -270395620670498668544 = - 2 19 . 829 . 622121492647 9 3 21xy - xJ + 1 -78872388517262584207872000 = - 212 . 3 12 . 53 . 176 . 2293 11 9 6 4 x + x - x + x + 3 1070550637822295568 = 2* . 33 . 3049 . 812766965051 11 c 7 6 _ 5 3 1 x + 5x - x+ 3x + x + 1 -944200579604801103 - 32 • 13 . 409 . 523 . 9767 .3862711 3x9 + 4x8 - x6 - x2 + 10 43565712072987267309820360 23 . 5 . 137 . 227 . 12892 . 1657 . 12720672103 6x7 - 11x6 - 78x + 1 -279477826494312527512486983217152 - 212 . 328 . 3659 . 10453 . 77981021 ,.11 c 10 _ 6 _ 4 10 4x + 5x + 5x - 3x + 12 46149666990307469250678226944 228 . 39 . 6592 . 20112523813 11 9 7 5 2 x - 2x - 2x' + x3 + 5x - 7 -580315367497445486308983 - 3 . 7 . 292 . 337 . 3947 . 24703116902777 11 9 8 „ 5 3 0 x + x + x - 4x + x -x-3 -23455852379352976723 = - 73 . 19 • 337 . 10680057671287 11 9 6 4 - 3 2 „ . x + x — x — x — 5x + x - 2x - 2 -36369606603543752 = - 2 3 . 7 . 112 . 383 . 1291 . 10855259 x 10 - 2x2 - 12 -8673099437121236707049472 = - 226 . 3 . 174 . 792 . 90912 x9 - 9x7 - x6 - 9x5 - 6 -288882166596576488178432768 - 28 . 3 17 • 8738148822592681 4 12x - 5 -3173458951753823158272000 = - 22^ . 316 . 53 . 711 . 114 x8 - 10x7 + 4x^ + x^ + 6 -102752045800616722612617216 - 218 . 33 . 13 . 172 . 23 . 137 . 3061 . 400621141 126 12 9 3 2 40: x + x - xJ + 5x + 2 d = 25232677538533100288 = 28 . 19 . 277 . 3803 . 4924517407 12 11 o 10 „ 8 _ 6 3 „ 2 41: x - x + 2x - 4x + 2x - x + 4x - 2 d = -86758866358709917196 = - 22 . 112 . 47 . 103 .37028270215459 42: x 12 + 3x10 - 2x7 + 2 d = 18465855535071625216 = 221. 1097 . 8026623589

43: x 12 + 2x6 - 18x 3 + 7 d = -250592637645216247970082816 = - 212 . 318 . 72 . 147713 12 11 4 3 2 44: x + 2x + 3x — 2x + x — 1 d = 10333928159670272 = 212 . 2522931679607 45: x 12 - x 11 + x6 - 3xU - 10x2 - 4 10 d = -12157770668347223489536 = - 2 . 1279 . 9282895166777041 46: x 12 + x9 - x7 - 13 d = -16453813535923886314420748 = - 22 . 136 . 2332 . 15697649364587 47: x 12 - x 10 + x9 - 2x7 + 9x5 - x2 - 3 d = -19786192337303397765888 = - 28 . 3 . 79 . 367 . 7027 . 10039 . 12596429 48: x 12 + 2x8 + x8 + 8x8 - x1* - 6x3 - 8 d = -8070097485823886224523264 = - 218 . 683 . 3581 . 4363 . 2884885769 12 11 5 4 49: x - 3x + 3x - 12x + 4 d = 84622619463514048044299520 = 28 . 312 . 5 . 29 . 43 . 739 . 134992781653 1? Q 7 6 4 2 50: x + x + 5x + 3x + 2x - 2x +4 d = 215212084543941861376 = 213 . 72 . 11 . 13 . 3749251664629

DEGREE 13 13 7 4 2 1: x - x + x + 2 x + 1 d = 2006664904485268 = 22 . 67 . 149 . 13721 . 3662419 2: x 13 + 2x7 - 6 d = 659307867628356401025024 = 212 . 3U . 33653539228501 X9 - 3x4 + 4x3 - 7 260114661344841551933^4 211 . 1 37 . 59 . 337 491 . 919 . 780833 x9 + 4 25 5081407584158479286272 = 2 389 . 55614302977 3xo 11 + 2x + x 7 + 03x 5 - £6 903513316013253280088064 >14 17 1303 200883761347 2x10 + 2x9 - 2x8 + x5 - x + 2 24 759339091009294303232 = 2 73 . 149 . 4161086401 12-10 4 _ 3 - x - 3x + x - 2x + 1 -544319568201842275 = - 5 31 . 2909 . 241439611529 11 _10_ 8 7 5 , 3x + 3x - x + x - 1 -26675002169186146096 = - 2-1 . 167 . 823 . 12130205947091 6x10 - 10x9 + 9x2 - 2 -2702768672030298477801328408 - 2- 11' 199 4363 . 292349627277670933 9 2 3x + x + 2x + 1 4 719418037507463216 = 2 13 53 , 2953 . 5741 . 3849383 63 , 2 x - x + 3 x — x — 1 2 -3895936205364005891 - 11 199 2609 . 62015365981 12 11 9 2x + 2x + 2x + 9 20 2821465491944323120837108317 = 3 809188400388373517 2x12 - 2x10 + 2x8 + x6 - 4x4 + x3 - 1 1454446916374348479328 25 . 232 . 757 . 4019 . 28240887397 8x8 - x5 + 2x3 - 1 -8404682870406831271875 - 33 . 55 . 23 . 71 . 457 . 1657 . 80553173 x11 + x7 - 2x6 - 9x5 + 2x3 + 2 -848892578751915667144704 14 „2 - 2 3^ . 619 . 9341 . 995649011821 8 + 3x + 1 8 13626250384558752512 = 2 11 ‘ 13 • 53 . 49112094391 128 13 17: x x12 - 3x10 + 4x6 - 2x4 + 2x - 2 d = 4832535496362844288000 10 = 2 5 . 107 . 283 . 2411 . 517127531 18: x13 4x9 + 3x4 + x3 - 1 5 d 8315205738265549408 = 2 211 . 1231517437539329 13 10 9 „ 8 4 2 , 19: x x +x-4x-x+x-1 d 4057064500408480784 24 . 172 . 23 . 251 . 1171 . 129788327 13 20: x x8 + 2x8 + 2x2 + 1 d 476752898002482781 = 29 . 1132 . 127 . 1619 . 6261637 13 12 3 21: x 3x + 2x3 - 2 d 23072033120895625547776 12 = 2 59 73 . 1999 . 2503 . 4430221 13 22: x 2x^2 + 8x^ - x8 + 4x3 - 4 d 126234622772800984064000000 16 = 2 7d . 5419 . 66323167433 13 12 9 6 4 £ _ 23: x x - x x - x + bx + 2 d 2602706620500047797776 ,4 „6 2 ' . 3“ . 563 . 1607 . 13711 , 17988059 13 ► 24: x 2x5 + x2' - - 3 3 d 141415374662573278089 = 3 292 . 3527 . 8219 • 1933547911 13 5 4 25: x yC + 5x + 1 d 122934200653356741328 = 24 . 14083 . 545578892340751 26: x 13 6x6 - 2x5 - 2x4 - 4 d = -1481448891685090890874880 20 = - 2au . 5 . 431 . 733 . 3229 . 276992153 13 9 - 8 6 2 27: x x - 5 x + x - x + 1 d -26223048853905499904 - 28 . 7 . 11 . 61 . 9161 , 2380563527 28: x13 7x9 - x6 + x4 - 2x3 - 2 d = -2093622923917522024061184 8 - 2 17* . 643 . 2753 . 812179793 13 29: x Hx8 _ 4x7 - 4 d 1097525547522270794088448 24 = 2 . 7 . 31 . 53 . 4157 . 7121 . 192149 0 10 _ 8 7 6 _ 4 - 3 2 - 2x + 2x - x + x + 3x - 2x - x - 2 -3169^93899522872942592 13 - 2 11 13 . 23 . 67 . 135057264179 4x,,876543 - x + x - x - x -x +x+2 o 3 1273599539357785940125 = 5 499 . 823 . 72331651211 x11 + 8x5 + 2 451117321818691915251712 ,15 29 . 139 . 251 . 941 1303 . 2753 12 _ 11 x + 7x - 3x9 3x8 - 2x5 - 2x3 + x2 + 4x - 8 190752968317190158254506105097008 19 281 . 1489 . 2063 . 8543 . 4478509174233043 2x9 - x6 - x3 - 9 86783592769458219595802016 25 . 37 . 72 . 29 . 872659430524486019 12 10 8 6 3 r- 2 x - x -x-x-3x-5x+2 -10885642888254115000500 - 2 13 . 62026455203727151 2x9 + 2x3 - 4x - 4 24 341022010379052515328 = 2 . 547 . 1376294657 12 11 6 x - _ 2x + x + „ 4 16 532296335527731272548352 = 2 2273 . 3573338100554059 5 4 2 . x + 4x + x - 1 2 -6393306351752805916 - 2 2029 . 787741048762051 10 9 8 x - x - x - 2 10 4813640425431061504 = 2 , 7 . 31 . 8521 . 2542280053 2x8 - x6 - x5 - Sx" - M 16942435895810997943296 10 2' . 3 . 97 . 269 . 17257 12248004193 2x10 - 3x9 + 4x8 - 2x3 - 2 -25532583123447798235136 16 - 2 13 773 . 2982281437123 -12 _ 11 10 3x + 5x + x 112571258492634106221 = 3* 929 . 1033 . 265994646733 130

43: x13 + x ^ + 2x^ + x7 + 3x^ + 9 d = 34616004928574935350652717 = 312 . 131 . 1277 . 7451 . 127738174001 13 10 _ 2 44: x + x -3x -x+1 d = -1308422119260206768 = - 24 . 19 . 443 . 577 . 5237 . 3215231 45: x 13 + x12 - 3x8 - x7 + 15x6 - 1 d = -75065513610604723437169584 = - 24 . 36 . 83 . 13003 .5963089044721219

46: x 13 + x12 - 14x 10 + x7 - 1 d = 194425209404295243919331328 = 2 12 . 34 . 29 . 149 . 1549 . 2347 . 37304294831 Urj 13 11 ft 47: x + x - 8 d = 20814644245674291640664064 = 232 . 3 . 7 . 19 . 293 . 3307 . 12535291 48: x 13 + 3x11 - x 10 + 2x3 - 4x + 1 d = -93335115667210417521004 = - 22 . 112 . 192841148072748796531 49: x 13 + 2x11 - 3x7 - x6 - x4 - 4x2 - 2 d = 1429276623075770159104 = 212 . 59 . 1039 . 5692313144249 13 „ 12 6 _ 3 50: x + 2x + x + 2x - 3x + 1 d = -193216471858945952960 = - 26 . 5 . 17 . 31 . 373 . 653 . 4703937481

DEGREE 14

1: x 14 - 4x). 5 - n 3x 4 - 6, d = 4754399399840793344606208 = 221 . 313 . 113 . 12583776571 14 10 „ 7 q 6 „ 2: x +x +4x -8x - 7 d = 153976450535067569271633526784 = 2111 . 75 . 7393 . 75635112723392701 3; + x6 _ ^ - 9 40 ? ? d = 4366030038556950422093824 = 2 . 727 . 2741 -773146398765289834086400 1 6 ? ? ? ? -2.5.• 2 167 . 577 . 7129 13 + 13 -3358493841729860166940876910355 -3.5. II2 . 1313 . 79 . 461 . 1009 . 166259 x10 . x9 + 8x8 _ x7 . x5 . 2x4 _ x2 + 2

-492588326640412813222665000 - 23 . 37 . 54 . 112 . 172 . 5639 . 228444139249 0 10 r 5 4 „ 2 c 3x - 6x - x + 7x + 5 -3896453510468164068077813760 1U ? ? - 2 .3.5.7. 131 . 5197 . 52807511055973 20x6 - 6x3 - 4x2 + 1 2162096264223519995073510899712 217 . 36 . 59 . 599 . 640263490242100139 8 6 X + X + X + 1 -21882923467866891 = - 35 . 29 . 43 . 131 . 1009 . 546349 2x11 + 4x° + 1 -90087540771148988416 = - 216 . 23 . 53 . 832 . 163691041 13 0 11 10 _ 6 5 3 x + 2x +6x +2x - x — x — x — 1 274422550721093907066688 25 . 13 • 167 . 1637 . 1206511094633371 8x7 + 418 -100561689633282270216555716624300420792622778417152 - 227 . 37 . 714 . 116 . 196 . 677

2x11 + 2x8 + 16x7 - 5x4 + 3x3 - 2x - 1 282284183969197586315318396673 32 . 227 . 601 . 2531 .2711 . 33505958363347471 2x11 + 3x10 + 2x9 - x8 + 2x7 - x6 - 4 1477448898352945741149765632 230 . 101 . 13623579325513543

14x10 + 1 -28446701915017791181174358016 ill p H i p p -2.3.7. 241 . 2213 132 14 12 9 8 , 6 5 . 16: x + x -x - x +6x + 4x + x+1 d = -40469859541336813397916 = - 22 . 3 . 31 . 6203 . 17538279059099401 |4 7 6 3 c 2 17: x - x - x - x - 5x - 1 d = 289101446543137050618992 = 24 . 7 . 521 . 601 . 3907 . 2109971725003 18: x14 + 2x11 - 2x8 - 16 d = 76567997582639319794967799398400 = 254 . 52 . 271 . 1129 . 555679381 19: x 14 - x8 - 3x6 - 3x5 - 2x3 - 1 d = 8651381819789310417 = 35 . 1031 . 3347 . 6113 . 1687759 20: x 14 + 2x8 + 6x - 1 d = 19964597829896747701436416 = 216 . 304635587004039729331 14 8 r 21: x + x + 6 d = -145141799800122019676160000 27 15 4 2 2 = - 2 . 3 • 5 . 79 . 139 14 13 12 6 _ 3 2 22: x + x + x+x + 2 x + x + x+ 1 d = -56488931359197903 = - 32 . 107 . 4073 . 14401995197 23: x 14 - 2x8 - 3 d = 19153991770374977667072 = 214 . 315 . 192 . 832 . 1812 14 „ 13 , 11 9 „ 8 _ 4 _ 3 24: x - 4x + 3x + x - 4x - 2x + 2x + 1 d = -19151777893445478340031900 = - 22 . 52 . 433 . 8699 . 50845423536100957 14 12 0 5 2 _ 25: x - x - 2x - x - 2x + 1 90 d = 469413619589996085248 = 2 . 19 . 16937 . 1391123491 14 9 3 2 26: x - 3xy - x3 + 2x - 3 d = 76257407242247569568016 = 24 . 3 . 71 . 79 . 107 . 2647107509482409 27: x 14 - 3x7 - 7x5 + 14 d = 2397016334763190942329667258000 = 24 . 53 . 7 18 . 1013 . 726552217 28: x 14 - x 10 - 7x6 + 3x3 - 2 d = 9958894828625115039520196 9 10 = 2 . 7 . 107 . 127 . 307 . 1061 . 1991267 2x12 + 7x10 + x8 + 2x5 - 4 261934101900840963128275501056 ,22 383 . 2339 . 7745699322215783 12 „ 4 _ x + 4x + 2 27 -26305047457430075604992 = - 2 71 . 269 733 1 "3 3 ? 2 x 0 + 4x5 + 2x - 1 17 59491741437887897534464 = 503 , 14867 . 60695351237 8 _ 7 5 2 _ x + 3 x - x + x + 3 -1302427833886043858592 = - 2- . 313 11801 . 2163259247 4x10 + 2 27 ,2 -340616061642315841667072 = - 2 17 31 5623 x 12 - 2x o 10 - 3xo 8 - x 5 + .2x 3 + . 8o -629269095153216256211603456 12 - 2'“ . 59 . 1297 . 2179 921355509421933 x11 - 2x10 + 3x8 + x7 - 2x5 + 3x3 + 1 2 -61964062385407282387 = - 7 . 139 . 293 . 31049984082869 13 10 _ x + x + 2 12 -118458343928341147648 = - 2 232 . 503 . 4919 . 960677 9 2xy + 12 -1188900699374169717748795441152 30 ,13 - 2 17 . 40852673196353 12 - x7 + 10x5 - 4 25777872284771157542358568960 ,12 11 71 . 127 239 3463 120728066989 4x11 - 4x7 + 2x6 + 1 14 -5106634610949701632 = - 2 112 , 283 9102130111 x 12 - 6 c ,27 ,13 142402777522273736108015616 4507' 13 o 12 6 „ x - 3x + x + 4 943273554299670105029279744 .16 71 14107 14370262883468407 2x4 _ 4 38 , 742887166976524837453824 = 2 11 ‘ 31‘ 1607 2x^ + 2x7 + x8 - 4 26 4034222546681239907074048 = 2 8861 . 6784177909937 d = -7899113168354803712 = - 2 1760265450808371 14 10 5 2 45: x + 2x — 2x° + 2x + 2 d = -263458965921202962432 = - 2 18 . 32 . 19 . 1039 . 11987 . 471901 14 7 5 46: x - 7x - 2x - 1 d = 796967672196277576744461 = 32 . 41 . 71 .137 . 1289 . 1459 . 118066642697 47: x111 - 2x13 - x8 - 2x5 3X11 + - 4 d = 204153740143667459722838016 = 222 . 34 . 7 . 59 . 73 . 83 . 173 . 16229 . 85531

48: x 111 - x6 - 14x 3 + 2 d 409387327970575221066675453952 16 = 2 . 11 . 23 . 43 . 113 • 5081442840158487941 14 11 7 0 49: x - x - 3x + 1 2 d = 2552276218812242438117 = 7 . 19 . 109 1615187842604729 14 0 12 . 11 10 „ 7 4 50: x +2x - 2x -x -2x-x-1 d = 518254482237714071552 = 2 . 271 . 719 . 811 . 3127693

DEGREE 15 15 1 : x - 13xJ - 2 19 .20 d = 24058507042850000000000000000000 = 2 31' 15 12 _ 10 9 8 , 2: x + x - 7 x + x -x+1 d = 175935392008100325171965872 ,4 = 2 43 . 2339 . 4759 . 7213 . 3184952179313 x 15 - x9 - 4 22 ,15 d = -116786190555689573758795776 = - 2 12473- 15 13 0 10 6 4 „ x + x - 3 x + 4 x - x - 4 d = -28692751801141275025540579328 ~16 3089 . 3943 . 6997 . 5137309273717 x 15 - 4x9 + 2x8 - 4 d = 6445217687213582155954257920 ,28 = 2 . 4802061384330378589 c 12 , 4 3 , 5x - 4x + x - 1 -49651083915785881231189606H - 226 . 3191 . 12967 . 178806182683 x9 - 7x6 - 4x3 + 2 13927142754091069500695498496 = 28 . 3 15 . 1033 . 151393 12 _ 9 4 3 , x + 5 x + x + x + x - 1 -862741503471891062041911 - 36 . 7 . 937 . 180432817883696401 14 11 9 0 2 . x + x - x - 2x + 1 54648225905446129664 = 212 . 37 . 503 . 716879911219 x9 + x8 - 2x7 + x2 - 2 36889327863340267200512 = 2 13 . 112 . 229 . 162513687978379 5x8 + 5x8 - 1 -5093212891239135742187500 = - 22 . 515 . 72 . 851502040919 x 14 - x 11 - 2x8 - 2x5 + x4 - 2x + 2 313562009246150940949568 26 . 37 . 173 . 12113 . 63189354694049 9 4 x - x - 4 -120069544003917253596397568 - 214 . 72 . 31 . 227 . 1051 . 20222114957329 8x9 - 6x4 +16 2209112441626189696505788810043326464 235 . 316 . 181 . 683 . 1973 . 13241 . 462467 x 13 + x9 - 4 -137816706547556502357409792 - 2 . 911 . 15817 . 2280339294479 , 12 9 6 3x - x - x - 20 -22064784240379581718047867115929600000 - a*0 . 3211 . 55 . 28333 x 12 * 18x7 + 2 -5967042292562068910978569721069568 - 214 . 322 . 71 . 8821 . 18530852621933 2x9 - x7 - 3x8 + x3 + x + 3 -306245163287875454558796544 - 28 . 2843 . 3559 . 4001 . 29549890368727 136

19: x 15 - x9 - x - 4 d = -116365894431465282074624000 14 = - 2 53 . 127 . 439 . 1019125148249671 20: x 15 - 5x9 + 5x5 - 4 d = -69283919228968000000000000000 = - 218 . 515 . 8660489903621 15 0 11 9 8 6 „ 21: x - 2x -x+x - x + 4 d = -8112482097831390540201984 = - 220 . 33 . 47 . 7283 . 837108797467 15 13 12 9 8 5 8 22: x 0 - x 3 - 2x + xy + 2x - x - 2x - x + 2 d = 48326635410171205599232 = 2 1^ . 7 . 331 . 991 . 3623 . 354567233 15 5 r 23: x + x - 6 24 4 1B 5 d = -35027097795072000000000000000 = -2.3 . 5 . 61J 15 r 11 0 24: x + 6x +2 d = -35166431691133151163094646784 14 - 2 317 . 71 . 1447 . 161778257621 15 13 6 i 25: x -X +X + X-1 d = -1064615035626557903 = - 172 . 31 . 73 . 1181 . 1378352509 26: x 15 - x3 + 4 d = -117433437854056820043153408 = - 234 . 315 . 113 • 713 27: x 15 - 3x7 + x6 - 17 d = -73701694068419032663943465622773784 = - 23 . 317 • 7 . 175 . 149 . 4517 . 10664663267663 15 14 11 _ 7 5 n 28: x - x - x + 3x - x + 9 d = -17703658099533697681032954492156 = - 22 . 38 . 23 . 113 . 809 . 15073 . 21285236715448193 29: x 15 + 9x5 + 1 d = -6737540294443449188232421875 = - 315 . 515 . 1095 15 12 _ 9 K 6 , 30: x - x + 3x - 5x + 6 2D 20 2 2 d = -714578710862041726220749504512 = - 2 . 3 . 1313 . 443 15 14 10 _ 31: x - x + x + 2 d = -4518904901558871932928 = - 214 . 3^ . 31 . 109841523992647 -28416414765113720808353790*1 - 2 4 . 4493 • 3952873186778561207483 x14 + 2x13 + x7 + 1 -95775390658150473116 - 22 . 7 . 11 . 41 . 7477 . 1014359680511 9x9 - 1 3716114899174210127585848941 = 315 . 173 . 713 . 52813 3xO 14 - r 5x 12 + 4|, -17643030676526314051269839290368 - 228 . 315 . 53 . 67 . 1289923092179 12 3 3x - xJ - 9 32529685348354293790213644324864 2 12 . 3 19 . 313 . 413 . 14933 6x8 + 3 1503186794023218494813670537 = 329 . 76 . 5713 11x10 + x5 - 1 117825143852032000000000000000 = 225 . 515 . 1635 4x11 + 12x10 + x3 - 4 106722332348337426735254161686790144 228 . 72 . 712 . 2707 . 4547 . 130764374841809

14x 12 - 3x2 + 1 -231860728908683832862720091657259 - 3 15 . 192 . 29 . 263 • 359 . 16347561473786269 5xC 10 + 4 II -664672764166144000000000000000 = - 243 . 515 . 195 c 11 5x + 4 -2337390751891456000000000000000 - 229 . 5 15 . 19 . 43 . 174618127 2x9 - x7 + 10 -46022943110186947875016448000000 - 214 . 56 . 71 . 131 . 13297 . 1453620735287939 9 8 6 5 x + 2x - 2x + 3x - 1 -4333611001553160947935 = - 5 . 73 . 9157 . 275951390343137 138 15 0 14 10 8 4 45: x + 2x - x - x + x - 3 d = 167287054625967216064663197 = 33 . 192 . 53 . 2741 . 3299 . 35811634881613 46: x15 + 3x^ - x9 + 6x8 + 6 d = -3616120539120839607240199372800 _ _ 217 ^ 325 ^ 52 ^ lU23 915285739 _

47: x15 + x12 - 4 d = -110471102473462757040586752 = - 228 . 315 . 30613 48: x18 - 3x11 + 3x8 + 9x^ - 1 d = 21093556534280735859881337105 o15 c 109 . 2677 . 1007595262829671 49: x 15 + 2x10 + 22 d = -3541814882528360155481500000000000000 = - 2 U . 5 15 . 119 . 3135 50: x 15 - x 11 + x 10 - 5x6 - x + 1 d = 135205958741012947349441 = 112 . 173 . 3259 . 1981892061812503