예제 #1
0
파일: mf_pari.py 프로젝트: roed314/CMFs
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()
예제 #2
0
파일: mf_pari.py 프로젝트: roed314/CMFs
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()
예제 #3
0
파일: mf_pari.py 프로젝트: roed314/CMFs
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