Testing the size and speed of large continued fraction expansions of fractional powers of 2. 27 jan 2005 (first revision up to 1670 finished 2 May 2005)Note that the progam has two distinct types of output:first, we check the quantity of interest, namely, looking for large partial quotients (any partial quotient over 10^7),second, in order to verify that we are not exceeding our accuracy of 1200 digits, we need to verify that none of the denominators exceed 10^600, since the accuracy of the number to the fraction p/q is less than 1/q^2. Thus, we print out any cases where the number of digits exceeds 570; plus any cases where the number of digits is small, less than 465. restart;with(numtheory):Digits:= 1200;22554 seconds for one run with 2500 digits so not realistic to extend to 2500 digits.for g from 2 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 267 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 405 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 524 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 588 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 641 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 703 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 810 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 858 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 883 to 1670 do
for r from 1 to g-1 do
if gcd(g,r) = 1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 470 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 908 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 470 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 998 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 470 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1030 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1063 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1143 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1252 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1280 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1352 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:for g from 1435 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1458 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1474 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1520 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1541 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1560 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1583 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1599 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1650 to 1670 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1671 to 1860 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1709 to 1860 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1767 to 1860 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1823 to 1870 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;for g from 1854 to 1870 do
for r from 1 to g-1 do
if gcd(r,g)=1 then
n2pB := evalf(2^(r/g)):
ncf2B := cfrac( n2pB, 1000, 'quotients');
ncf2C := subsop(nops(ncf2B) = NULL, ncf2B);
ncf2Max := max(op(ncf2C));
ncf2Size := evalf[10](log10(nthdenom(ncf2B,1000)));
if ncf2Max > 10^7 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size > 570 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
if ncf2Size < 465 then
print(g, r, max(op(ncf2C)), ncf2Size);
end if;
end if;
end do:
end do:g;