docs: def smpar(C):
      """Get the running effective SM parameters."""
      m2 = C['m2'].real
      Lambda = C['Lambda'].real
      v = (sqrt(2 * m2 / Lambda) + 3 * m2**(3 / 2) /
           (sqrt(2) * Lambda**(5 / 2)) * C['phi'])
      GF = 1 / (sqrt(2) * v**2)  # TODO
      Mh2 = 2 * m2 * (1 - m2 / Lambda * (3 * C['phi'] - 4 * Lambda * C['phiBox'] +
                                         Lambda * C['phiD']))
      eps = C['phiWB'] * (v**2)
      gb = (C['g'] / (1 - C['phiW'] * (v**2))).real
      gpb = (C['gp'] / (1 - C['phiB'] * (v**2))).real
      gsb = (C['gs'] / (1 - C['phiG'] * (v**2))).real
      MW = gb * v / 2
      ZG0 = 1 + C['phiD'] * (v**2) / 4
      MZ = (sqrt(gb**2 + gpb**2) / 2 * v
            * (1 + eps * gb * gpb / (gb**2 + gpb**2)) * ZG0)
      Mnup = -(v**2) * C['llphiphi']
      Mep = v / sqrt(2) * (C['Ge'] - C['ephi'] * (v**2) / 2)
      Mup = v / sqrt(2) * (C['Gu'] - C['uphi'] * (v**2) / 2)
      Mdp = v / sqrt(2) * (C['Gd'] - C['dphi'] * (v**2) / 2)
      UeL, Me, UeR = ckmutil.diag.msvd(Mep)
      UuL, Mu, UuR = ckmutil.diag.msvd(Mup)
      UdL, Md, UdR = ckmutil.diag.msvd(Mdp)
      UnuL, Mnu = ckmutil.diag.mtakfac(Mnup)
      eb = (gb * gpb / sqrt(gb**2 + gpb**2) *
            (1 - eps * gb * gpb / (gb**2 + gpb**2)))
      K = UuL.conj().T @ UdL
      # U = UeL.conj().T @ UnuL
      sm = {}
      sm['GF'] = GF
      sm['alpha_e'] = eb**2 / (4 * pi)
      sm['alpha_s'] = gsb**2 / (4 * pi)
      sm['Vub'] = abs(K[0, 2])
      sm['Vcb'] = abs(K[1, 2])
      sm['Vus'] = abs(K[0, 1])
      sm['delta'] = phase(-K[0, 0] * K[0, 2].conj()
                          / (K[1, 0] * K[1, 2].conj()))
      # sm['U'] = Uu
      sm['m_W'] = MW
      sm['m_Z'] = MZ
      sm['m_h'] = sqrt(abs(Mh2))
      sm['m_u'] = Mu[0]
      sm['m_c'] = Mu[1]
      sm['m_t'] = Mu[2]
      sm['m_d'] = Md[0]
      sm['m_s'] = Md[1]
      sm['m_b'] = Md[2]
      sm['m_e'] = Me[0]
      sm['m_mu'] = Me[1]
      sm['m_tau'] = Me[2]
      return  {k: v.real for k, v in sm.items()}