
# q-expansion of newform 2178.4.a.bd, downloaded from the LMFDB on 05 October 2026.

# We generate the q-expansion using the Hecke eigenvalues a_p at the primes.
# Each a_p is given as a linear combination
# of the following basis for the coefficient ring.

def make_data():

    from sage.all import prod, floor, prime_powers, gcd, QQ, primes_first_n, next_prime, RR

    def discrete_log(elts, gens, mod):
        # algorithm 2.2, page 16 of https://arxiv.org/abs/0903.2785
        def table_gens(gens, mod):
            T = [1]
            n = len(gens)
            r = [None]*n
            s = [None]*n
            for i in range(n):
                beta = gens[i]
                r[i] = 1
                N = len(T)
                while beta not in T:
                    for Tj in T[:N]:
                        T.append((beta*Tj) % mod)
                    beta = (beta*gens[i]) % mod
                    r[i] += 1
                s[i] = T.index(beta)
            return T, r, s
        T, r, s = table_gens(gens, mod)
        n = len(gens)
        N = [ prod(r[:j]) for j in range(n) ]
        Z = lambda s: [ (floor(s/N[j]) % r[j]) for j in range(n)]
        return [Z(T.index(elt % mod)) for elt in elts]
    def extend_multiplicatively(an):
        for pp in prime_powers(len(an)-1):
            for k in range(1, (len(an) - 1)//pp + 1):
                if gcd(k, pp) == 1:
                    an[pp*k] = an[pp]*an[k]
    from sage.all import PolynomialRing, NumberField
    R = PolynomialRing(QQ, "x")
    f = R(poly_data)
    K = NumberField(f, "a")
    betas = [K.gens()[0]**i for i in range(len(poly_data))]
    convert_elt_to_field = lambda elt: sum(c*beta for c, beta in zip(elt, betas))
    # convert aps to K elements
    primes = primes_first_n(len(aps_data))
    good_primes = [p for p in primes if not p.divides(level)]
    aps = map(convert_elt_to_field, aps_data)
    if not hecke_ring_character_values:
        # trivial character
        char_values = dict(zip(good_primes, [1]*len(good_primes)))
    else:
        gens = [elt[0] for elt in hecke_ring_character_values]
        gens_values = [convert_elt_to_field(elt[1]) for elt in hecke_ring_character_values]
        char_values = dict([(
            p,prod(g**k for g, k in zip(gens_values, elt)))
            for p, elt in zip(good_primes, discrete_log(good_primes, gens, level))
            ])
    an_list_bound = next_prime(primes[-1])
    an = [0]*an_list_bound
    an[1] = 1
    
    from sage.all import PowerSeriesRing
    PS = PowerSeriesRing(K, "q")
    for p, ap in zip(primes, aps):
        if p.divides(level):
            euler_factor = [1, -ap]
        else:
            euler_factor = [1, -ap, p**(weight - 1) * char_values[p]]
        k = RR(an_list_bound).log(p).floor() + 1
        foo = (1/PS(euler_factor)).padded_list(k)
        for i in range(1, k):
            an[p**i] = foo[i]
    extend_multiplicatively(an)
    return PS(an)
level = 2178
weight = 4
poly_data = [-3, 0, 1]

# The basis for the coefficient ring is just the power basis
# in the root of the defining polynomial above.
hecke_ring_character_values = None
aps_data = [[-2, 0], [0, 0], [6, 7], [-3, 11], [0, 0], [-57, 6], [-36, 9], [-75, -47], [111, -25], [231, -42], [7, -165], [232, 63], [30, -177], [-216, 96], [-225, -213], [-144, -21], [-102, 94], [-186, -322], [187, -339], [-546, 26], [-222, 28], [363, -107], [-141, 3], [789, 46], [-637, 636], [-894, 162], [674, -294], [-723, -399], [-153, -34], [-21, 448], [-1728, 544], [792, 0], [-762, -142], [-1815, -363], [-1185, 1146], [-438, -330], [-200, 852], [2033, 147], [1662, 918], [474, -1314], [3504, 32], [-3364, -75], [786, -1726], [-768, 493], [879, 1176], [1090, -870], [-1068, -1720], [-394, 2370], [2226, 762], [-122, -1173], [2580, -1845], [351, 1689], [66, -372], [2235, 233], [513, -786], [2751, 1977], [5580, -1395], [366, 1782], [2529, 2512], [-630, 936], [-3240, 44], [-2499, 1002], [-1539, -1727], [-4644, 708], [-3191, 3336], [-654, -2152], [2360, -2172], [-1218, -3773], [-2898, 90], [-4503, -3014], [6321, -436], [-9135, 75], [4397, -3759], [-1122, 5326], [-1426, 5970], [-8790, -2194], [-3738, -3623], [-316, 567], [297, 5082], [462, -223], [-2781, 1605], [3202, 1827], [-930, -4002], [-2977, 840], [8721, 2083], [-4872, -5828], [-345, 8944], [4140, -5529], [9411, 2718], [-2272, 2820], [-11298, 2278], [-9060, -228], [3073, 3561], [8427, 2163], [-9152, 2160], [-729, 8241], [210, -5428], [-5214, 3862], [-16998, -2926], [-978, -3024], [1896, 8400], [-4422, -1242], [12471, -7257], [8898, -1992], [867, 11347], [-17039, -5742], [1449, -10377], [5958, 4629], [4653, -7995], [5688, 1973], [699, 11769], [-21, -2392], [-17469, -2298], [-6817, -6963], [-7313, -11217], [5487, 7462], [1793, -1509], [1374, -7790], [13368, 11180], [-20169, 1839], [-1262, -3525], [23190, -4468], [20445, -2724], [-2115, 5967], [-16378, 4062], [-2175, 3126], [1354, -696], [-12639, 769], [-13199, -4647], [17991, 3900], [13167, -4273], [-1617, -13383], [-11324, 120], [16210, 1527], [10182, 4035], [15576, 4679], [-11790, 6408], [-9600, -13884], [-26430, -4492], [-20430, -11472], [648, 10988], [20910, 6846], [-10888, -3168], [-1599, 14325], [-11698, 18927], [-20319, 13481], [-17085, -6790], [-4824, -9912], [-17908, 4068], [14301, 10509], [5925, -7336], [-11445, 13850], [-18746, 11310], [11685, 16671], [-6580, -13944], [-33030, 2010], [27108, -6976], [-6363, -10620], [-43926, -4409], [-20187, 13836], [16059, -18451], [-8484, -22317], [-5901, -12859], [-13479, -20917], [29181, 4250], [-23802, 3938], [7180, 7272], [7101, 18616], [20742, -4245], [17142, 16744], [32805, 12921], [38150, -1584], [-14871, -5625], [-60492, -783], [12263, 17175], [15807, -14482], [14256, -18968], [-6240, -3635], [15888, -1740], [3393, -9578], [32095, 2235], [29115, 8175], [-28454, -15492], [26850, 20595], [-30462, -2710], [23760, 17604], [22713, 14740], [-38116, 348], [59862, -1629], [-32595, 21603], [-14402, 10344], [-6393, -18621], [-15698, -17370], [-43668, 8289], [34569, -18447], [2505, 6464], [-7008, -28173], [20954, -2424], [33288, -7323], [-23622, -13578], [-13290, 10638], [-40560, 9680], [1232, -8841], [9762, -29149], [-17670, -26282], [14874, 4864], [9722, 33282], [23199, 99], [-32688, -29517], [-62531, 1203], [15186, 32069], [33918, -5579], [20986, 11142], [-22815, 27819], [-35211, -1473], [5233, 28158], [-4509, -3211], [690, 10308], [29223, -26061], [36582, -12137], [-27435, -460], [-55593, 19137], [22965, -134], [4853, -13407], [-39180, -2328], [57441, -2202], [-15597, -8046], [-36171, 41181], [2109, 37311], [37029, -17535], [-41260, 24807], [-47790, 2386], [-46008, -20020], [3612, 10869], [-42410, 7266], [45699, 8685], [4714, -33714], [50295, 9774], [15846, -39794], [-34446, -40346], [-51495, 8255], [31476, 6828], [19306, 26634], [-79688, -6651], [92412, -14796], [-14841, 37041], [51307, 34191], [-47106, -16194], [21177, -31827], [-13884, -7488], [13050, -9256], [-27540, -2325], [-21354, 46262], [11287, -37020], [-13047, -17850], [-51186, 37782], [4538, -8415], [10062, 30030], [32982, -9257], [-12726, -29140], [88743, 3669], [39327, -15285], [27867, 44098], [-42618, 26896], [-70245, -6450], [60895, -4995], [-84774, 18640], [88926, -22466], [2079, 54827], [-72546, -32394], [9428, 4953], [-10654, 43326], [22897, -23832], [-68745, -22323], [-46854, -49192], [-79364, 13548], [16080, -4868], [19071, 31158], [-44604, 58828], [-29487, 40101], [-58344, 42708], [41794, 46374], [63951, -22779], [-57759, 13878], [-101775, -20503], [-74181, -21533], [-42058, -30738], [-96174, -2184], [-12071, 53121], [18954, 74937], [30714, 8341], [-33777, -46419], [-91038, 40737], [-104910, 30786], [-48366, -42522], [-2058, 62682], [76345, -29175], [35814, -73903], [-1062, -37374], [-59529, 28115], [-8724, 67036], [22059, 19638], [11151, 30793], [-134640, 8076], [69817, 6711], [84490, 21480], [135564, 1420], [-137702, -11583], [-10521, 67455], [-56955, -28880], [-86847, 15051], [48708, -61269], [11676, 31347], [-45023, 56355], [21144, -25152], [-69156, 13003], [13719, 3569], [-18630, -33702], [-9674, -8190], [86226, -39177], [-21702, -34018], [6235, 30828], [171381, 10296], [-33896, -48828], [118218, -9027], [9794, 22578], [-99050, 23730], [64150, -8490], [31716, 94908], [-56163, 18240], [117669, 34906], [84546, -18192], [-24738, 28306], [59553, 17265], [-30627, -22119], [-3495, 37495], [-139840, 22479], [-74430, -70104], [50627, 44148], [5490, -98782], [26960, 78393], [86082, 10912], [65205, 71454], [-85570, 70530], [45744, -29492], [-178782, 23658], [-8314, 47613], [-19897, -6243], [149766, -6726], [-42792, 47087], [-20109, 87435], [73118, -27954], [183204, -4923], [44082, 13782], [50451, -54364], [-43338, -85263], [61653, 49217], [-43902, -32034], [-153192, -31665], [95322, 54554], [56598, -43034], [-39882, 30300], [-10176, 23948], [196071, 15975], [57031, -74835], [-18167, 45798], [-110043, 29880], [-34140, -103860], [60954, 69967], [169665, 44575], [89720, 47112], [-35661, 73713], [139947, -58068], [-49938, 2634], [89980, 1893], [33507, -6927], [62619, 88713], [-113592, -50233], [96300, 63591], [-70746, -56692], [65286, 65136], [-109317, -19550], [127902, -58034], [-120144, -49728], [8751, 8747], [-40953, 10123], [-107759, -73575], [144608, 42195], [235860, 11880], [-29532, -71840], [-22030, -67686], [-39954, 114892], [-224403, 19691], [92095, 43605], [-11616, 30044], [156786, 20148], [-120354, -56470], [71487, 43908], [-42553, 20889], [200085, 30984], [-136665, 47724], [75693, 37382], [74268, -45228], [-243990, 2592], [58338, -92064], [45657, 37791], [3410, 19077], [46998, -89271], [-35057, -118647], [-160860, 24724], [149436, 32289], [-54933, 65490], [98073, -8049], [-22701, -4381], [-67290, -33447], [366, 42187], [188649, -18789], [174269, -7119], [-10890, 59274], [-89325, -43623], [102270, 66347], [-92610, 16342], [-14571, -78231], [35112, -113904], [-125155, -73908], [71214, 19651], [-78420, 45436], [62358, 118248], [-86074, 120414], [-78966, -132474]]
