P := PolynomialRing(Integers()); Pol := 3*x^7 + 19*x^6 + 7*x^5 + 15*x^4 + 3*x^3 + 6*x^2 + x + 1; alpha:=Roots(ChangeRing(Pol,RealField(1000)))[1][1]; x0:=RealField(1000)!1.0; x1:=alpha; x2:=alpha^2; x3:=alpha^3; x4:=alpha^4; x5:=alpha^5; x6:=alpha^6; x7:=alpha^7; B:=RMatrixSpace(Integers(),3,4)!0; B[1][1]:=Integers()!Round(10^1000*x0); B[2][1]:=Integers()!Round(10^1000*x1); B[3][1]:=Integers()!Round(10^1000*x2); for i:=1 to 3 do for j:=2 to 4 do if (i eq j-1) then B[i][j]:=1; else B[i][j]:=0; end if; end for; end for; LLL(B)[1]; // failure B:=RMatrixSpace(Integers(),4,5)!0; B[1][1]:=Integers()!Round(10^1000*x0); B[2][1]:=Integers()!Round(10^1000*x1); B[3][1]:=Integers()!Round(10^1000*x2); B[4][1]:=Integers()!Round(10^1000*x3); for i:=1 to 4 do for j:=2 to 5 do if (i eq j-1) then B[i][j]:=1; else B[i][j]:=0; end if; end for; end for; LLL(B)[1]; // failure B:=RMatrixSpace(Integers(),5,6)!0; B[1][1]:=Integers()!Round(10^1000*x0); B[2][1]:=Integers()!Round(10^1000*x1); B[3][1]:=Integers()!Round(10^1000*x2); B[4][1]:=Integers()!Round(10^1000*x3); B[5][1]:=Integers()!Round(10^1000*x4); for i:=1 to 5 do for j:=2 to 6 do if (i eq j-1) then B[i][j]:=1; else B[i][j]:=0; end if; end for; end for; LLL(B)[1]; // failure B:=RMatrixSpace(Integers(),6,7)!0; B[1][1]:=Integers()!Round(10^1000*x0); B[2][1]:=Integers()!Round(10^1000*x1); B[3][1]:=Integers()!Round(10^1000*x2); B[4][1]:=Integers()!Round(10^1000*x3); B[5][1]:=Integers()!Round(10^1000*x4); B[6][1]:=Integers()!Round(10^1000*x5); for i:=1 to 6 do for j:=2 to 7 do if (i eq j-1) then B[i][j]:=1; else B[i][j]:=0; end if; end for; end for; LLL(B)[1]; // success Pol2:= x^5+6*x^4+3*x^2+1; RealField(5)!Evaluate (Pol2, alpha); /////////////////////////////////////////////////// /////////////////////////////////////////////////// ////// Formula for Pi ///////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// R:=RealField(2000); pi := Pi (R); x:=VectorSpace(R, 8)!0; for i:=1 to 8 do for k:=0 to 1000 do if (k+i-1 eq 0) then x[i]:=x[i]; else x[i]:=x[i]+(R!1.0/R!((8*k+i-1)*16^k)); end if; end for; end for; B:=RMatrixSpace(Integers(),9,10)!0; B[1][1]:=Integers()!Round(10^1000*pi); B[1][2]:=1; for i:=2 to 9 do B[i][1]:=Integers()!Round(10^1000*x[i-1]); B[i][i+1] := 1; end for; LLL(B)[1]; // success