home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d9r10(input,output);
- (* driver for routine LAGUER *)
- CONST
- m=4;
- twomp2=10; (* twomp2=2*m+2 *)
- ntry=21;
- twontry=42; (* twontry=2*ntry *)
- eps=1.0e-6;
- TYPE
- glcarray = ARRAY [1..twomp2] OF real;
- gl2array = ARRAY [1..2] OF real;
- VAR
- i,iflag,j,n : integer;
- polish : boolean;
- x : gl2array;
- a : glcarray;
- y : ARRAY [1..twontry] OF real;
-
- (*$I MODFILE.PAS *)
- (*$I LAGUER.PAS *)
-
- BEGIN
- a[1] := 0.0; a[2] := 2.0;
- a[3] := 0.0; a[4] := 0.0;
- a[5] := -1.0; a[6] := -2.0;
- a[7] := 0.0; a[8] := 0.0;
- a[9] := 1.0; a[10] := 0.0;
- writeln;
- writeln('Roots of polynomial x^4-(1+2i)*x^2+2i');
- writeln('real':15,'complex':13);
- n := 0;
- polish := false;
- FOR i := 1 to ntry DO BEGIN
- x[1] := (i-11.0)/10.0;
- x[2] := (i-11.0)/10.0;
- laguer(a,m,x,eps,polish);
- IF (n = 0) THEN BEGIN
- n := 1;
- y[1] := x[1];
- y[2] := x[2];
- writeln(n:5,x[1]:12:6,x[2]:12:6)
- END ELSE BEGIN
- iflag := 0;
- FOR j := 1 to n DO BEGIN
- IF (sqrt(sqr(x[1]-y[2*j-1])+sqr(x[2]-y[2*j]))
- <= eps*sqrt(sqr(x[1])+sqr(x[2]))) THEN
- iflag := 1
- END;
- IF (iflag = 0) THEN BEGIN
- n := n+1;
- y[2*n-1] := x[1];
- y[2*n] := x[2];
- writeln(n:5,x[1]:12:6,x[2]:12:6)
- END
- END
- END
- END.
-