#C21.txt, April 10, 2025 Help21:=proc(): print(`Eq510(q,n,c,x), Eq510(256,33,10,5) , Histogram510(q,n,x), BA1(f,r) , BA(f) , CF(f) `): CVG(f): end: read `C17.txt`: Digits:=20: Eq510:=proc(q,n,c,x) local r,u: r:=Ord(x,n): evalf(abs(1/r*int(exp(2*Pi*I*mods(r*c,q)/r*u),u=0..1))^2): end: Histogram510:=proc(q,n,x) local c: plot([seq([c,Eq510(q,n,c,x)],c=1..q-1)]); end: #BA1(f,r): the closest fraction d/r to f, where r is fixed BA1:=proc(f,r) local b: b:=round(f*r)/r: [b, evalf(abs(b-f)*denom(f))] end: #BA(f): the best fraction d/r where r is between 1 and sqrt(denom(f)) BA:=proc(f) local r,cha,rec,hope: cha:=BA1(f,1)[1]: rec:=BA1(f,1)[2]: for r from 2 to trunc(sqrt(denom(f))) do hope:=BA1(f,r): if hope[2]0) then RETURN(FAIL): fi: if type(f,integer) then RETURN([f]): else a:=trunc(f): RETURN([a,op(CF(1/(f-a)))]): fi: end: #EvalCF(L): inputs a list of pos. integers and outputs the fraction whose cont. fraction it is #(reverse of CF(f)) EvalCF:=proc(L) if nops(L)=1 then L[1]: else L[1]+1/EvalCF([op(2..nops(L),L)]): fi: end: #CVG(f): inputs a rational number f and outputs its list of CONVERGENTS CVG:=proc(f) local L,i: L:=CF(f): [seq(EvalCF([op(1..i,L)]),i=1..nops(L))]: end: #From C20.txt #C20.txt, April 7, 2025 Help20:=proc(): print(`Eq55(q,n,k,c,x), Eq56(q,n,k,c,x) , Eq57(q,n,k,c,x), Eq58(q,n,k,c,x), Eq59(q,n,k,c,x), Histogram56(q,k,n,x) `):end: read `C17.txt`: #Eq55(q,k,n,x): the value of Eq. (5.5) in Shor's paper Eq55:=proc(q,n,k,c,x) local a,su: su:=0: for a from 0 to q-1 do if x^a-x^k mod n=0 then su:=evalc(su+exp(2*Pi*I*a*c/q)): fi: od: evalf(abs(su/q)^2): end: #Eq56(q,k,n,c,x): the value of Eq. (5.5) in Shor's paper Eq56:=proc(q,n,k,c,x) local r,b: r:=Ord(x,n): if k>=r then RETURN(FAIL): fi: evalf(abs(add(exp(2*Pi*I*(b*r+k)*c/q),b=0..trunc((q-k-1)/r))/q)^2): end: #Eq56(q,k,n,c,x): the value of Eq. (5.6) in Shor's paper Eq56:=proc(q,n,k,c,x) local r,b: r:=Ord(x,n): if k>=r then RETURN(FAIL): fi: evalf(abs(add(exp(2*Pi*I*(b*r+k)*c/q),b=0..trunc((q-k-1)/r))/q)^2): end: #Eq57(q,k,n,c,x): the value of Eq. (5.7) in Shor's paper Eq57:=proc(q,n,k,c,x) local r,b: r:=Ord(x,n): if k>=r then RETURN(FAIL): fi: #evalf(abs(add(exp(2*Pi*I*(b*({r*c}_q)/q),b=0..trunc((q-k-1)/r))/q)^2): evalf(abs(add(exp(2*Pi*I*b*(mods(r*c,q))/q),b=0..trunc((q-k-1)/r))/q)^2): end: #Eq58(q,k,n,c,x): the value of Eq. (5.8) in Shor's paper (w/o the error term) Eq58:=proc(q,n,k,c,x) local r,b: r:=Ord(x,n): if k>=r then RETURN(FAIL): fi: evalf(abs(int(exp(2*Pi*I*b*(mods(r*c,q))/q),b=0..trunc((q-k-1)/r))/q)^2): end: #Eq59(q,k,n,c,x): the value of Eq. (5.9) in Shor's paper (w/o the error term) Eq59:=proc(q,n,k,c,x) local r,b,u: r:=Ord(x,n): if k>=r then RETURN(FAIL): fi: evalf(abs(int(exp(2*Pi*I*(mods(r*c,q))/r),u=0..r/q*trunc((q-k-1)/r))/q)^2): end: #Added after class #Histogram56(q,k,n,c): the plot of [c,Eq56(q,k,n,c,x)] for c from 1 to q-1 Histogram56:=proc(q,k,n,x) local c: plot([seq([c,Eq56(q,k,n,c,x)],c=1..q-1)]); end: #end C20.txt