docs: def get_parameters(scale, f=5, input_parameters=None):
      """Get parameters (masses, coupling constants, ...) at the scale
      `scale` in QCD with `f` dynamical quark flavours. Optionally takes a
      dictionary of inputs (otherwise, defaults are used)."""
      p = default_parameters.copy()
      if input_parameters is not None:
          # if parameters are passed in, overwrite the default values
          p.update(input_parameters)
      parameters = {}
      # running quark masses and alpha_s
      parameters['m_b'] = m_b(p['m_b'], scale, f, p['alpha_s'])
      parameters['m_c'] = m_c(p['m_c'], scale, f, p['alpha_s'])
      parameters['m_s'] = m_s(p['m_s'], scale, f, p['alpha_s'])
      parameters['m_u'] = m_s(p['m_u'], scale, f, p['alpha_s'])
      parameters['m_d'] = m_s(p['m_d'], scale, f, p['alpha_s'])
      parameters['alpha_s'] = alpha_s(scale, f, p['alpha_s'])
      # no running is performed for these parameters
      for k in ['m_W', 'm_Z', 'GF',
                'alpha_e',
                'Vus', 'Vub', 'Vcb', 'delta',
                'm_e', 'm_mu', 'm_tau', ]:
          parameters[k] = p[k]
      return parameters