def save_sym8_odd_form(key, prec=sym8_odd_prec): fname = fname_sym8_odd(key, prec) if os.path.exists(fname): return None es4, es6, x10, x12, x35 = degree2_modular_forms_ring_level1_gens(prec) if key in sym8_odd_dct: wt_dcts = sym8_odd_dct[key] gens_dct = {4: es4, 6: es6, 10: x10, 12: x12, 35: x35} fs = [mul([gens_dct[k]**i for k, i in d.items()]) for d in wt_dcts] f = rankin_cohen_triple_det_sym8(*fs) elif key == "h15": f10 = rankin_cohen_pair_x5(_rankin_cohen_pair_sym_pol(8, 5, 5), prec) f = vector_valued_rankin_cohen(es4, f10) elif key == "h17": f12 = rankin_cohen_pair_det2_sym(8, es4, es6) f = vector_valued_rankin_cohen(es4, f12) f.save_as_binary(fname)
def monom_mul(tpl, v, flist): tpls = group(tpl, 3) l = zip(flist, tpls) return ((v * mul([QQ(2) ** (-t[1]) for _, t in l])) * mul((f._differential_operator_monomial(*t) for f, t in l)))
def interpolate_pol(x, d): prd = mul([x - a for a in d]) prd_dff = prd.derivative(x) return sum([v * prd_dff.subs({x: k}) ** (-1) * prd // (x - k) for k, v in d.items()])