def cal_g_bm3(p, g, k):
    """
    calculate shear modulus at given pressure

    :param p: pressure
    :param g: [g0, g0p]
    :param k: [v0, k0, k0p]
    :return: shear modulus at high pressure
    """
    v = cal_v_bm3(p, k)
    v0 = k[0]
    k0 = k[1]
    kp = k[2]
    g0 = g[0]
    gp = g[1]
    f = 0.5 * ((v / v0)**(-2. / 3.) - 1.)
    return (1. + 2. * f)**(5. / 2.) * (g0 + (3. * k0 * gp - 5. * g0) * f +
                                       (6. * k0 * gp - 24. * k0 - 14. * g0 +
                                        9. / 2. * k0 * kp) * f**2.)