def WeightOne_v2(filename, Nmin, Nmax, dmax, nan=100, njobs=1, jobno=0, Detail=0): # Outputs N:k:i:time:dims:traces:polys with polys only for dims<=dmax out = open(filename, 'w') if filename else None screen = sys.stdout n = -1 # will increment for each (N,1,chi) in range, so we skip unless n%njobs==jobno for N in range(Nmin, Nmax + 1): nch = NChars(N) screen.write("N = {}, {} characters: ".format(N, nch)) for i in range(nch): n += 1 if n % njobs != jobno: continue screen.write(" (o={}) ".format(i + 1)) screen.flush() t0 = time.time() newforms = Newforms_v2(N, 1, i + 1, dmax, nan, Detail) t0 = time.time() - t0 line = data_to_string(N, 1, i + 1, t0, newforms) + "\n" if out: out.write(line) out.flush() else: screen.write('\n') screen.write(line) screen.write('\n') screen.flush() if out: out.close()
def DecomposeSpaces(filename, Nk2min, Nk2max, dmax=20, nan=100, njobs=1, jobno=0, Detail=0): out = open(filename, 'w') if filename else None screen = sys.stdout Nmax = int(Nk2max / 4.0) nspaces = 0 n = -1 # will increment for each (N,k,chi) in range, so we skip unless n%njobs==jobno failed_spaces = [] for N in range(1, Nmax + 1): kmin = max(2, (RR(Nk2min) / N).sqrt().ceil()) kmax = (RR(Nk2max) / N).sqrt().floor() if kmin > kmax: continue level_info = "N = {}: ".format(N) level_info += "{} <=k<= {} ".format(kmin, kmax) #level_info += "({} <=Nk^2<= {})".format(N*kmin**2,N*kmax**2) #screen.write(level_info) info_written = False nchars = NChars(N) for k in range(kmin, kmax + 1): if not info_written: screen.write(level_info) info_written = True screen.write(" [k={}] ".format(k)) screen.flush() nspaces += 1 for i in range(nchars): n += 1 if n % njobs != jobno: continue screen.write(" (o={}) ".format(i + 1)) screen.flush() t0 = time.time() try: newforms = Newforms(N, k, i + 1, dmax, nan, Detail) t0 = time.time() - t0 line = data_to_string(N, k, i + 1, t0, newforms) + "\n" if out: out.write(line) out.flush() else: screen.write('\n') screen.write(line) except PariError, e: t1 = time.time() print( "\n*************************\nPariError {} on ({},{},{}) after {}s\n***********************" .format(e, N, k, i + 1, t1 - t0)) failed_spaces.append((N, k, i + 1)) if info_written: screen.write('\n') screen.flush()
def Nspaces(Nk2min, Nk2max): Nmax = int(Nk2max / 4.0) nspaces = 0 for N in range(1, Nmax + 1): kmin = max(2, (RR(Nk2min) / N).sqrt().ceil()) kmax = (RR(Nk2max) / N).sqrt().floor() if kmin > kmax: continue nspaces += NChars(N) * (1 + kmax - kmin) return nspaces