from math import pi, ceil

zeta4 = pi**4 / 90

def somme_partielle(n: int, rev=True) -> float:
    termes = list(1/k**4 for k in range(1, n+1))
    if rev: termes = reversed(termes)
    return sum(termes)

def rang(delta: float) -> int:
    return max(1, ceil( (3*delta)**(-1/3) ))

delta = 1e-9
n = rang(delta)
S_n = somme_partielle(n, rev=True)
err = zeta4 - S_n
inf_err, sup_err = 1/(3 * n**3) - 1/n**4, 1/(3 * n**3)

print(f"précision demandée:  {delta = :.1e}")
print()
print(f"    {n = }\n  {S_n = :.16f}")
print(f"{zeta4 = :.16f},  {err = :.3e} <= {delta = :.0e}")

print()
print(f"inf_err <= err <= sup_err ?  {inf_err <= err and err <= sup_err}")
print(f"{inf_err:.3e} <= {err:.3e} <= {sup_err:.3e}")