docs: def _compute_non_linear_slope(self, vs30, C):
          """
          Compute non-linear slope factor,
          equations (13a) to (13d), pag 108-109.
          """
          V1 = 180.0
          V2 = 300.0
          Vref = 760.0
  
          # equation (13d), values are zero for vs30 >= Vref = 760.0
          bnl = np.zeros(vs30.shape)
  
          # equation (13a)
          idx = vs30 <= V1
          bnl[idx] = C['b1']
  
          # equation (13b)
          idx = np.where((vs30 > V1) & (vs30 <= V2))
          bnl[idx] = (C['b1'] - C['b2']) * \
                     np.log(vs30[idx] / V2) / np.log(V1 / V2) + C['b2']
  
          # equation (13c)
          idx = np.where((vs30 > V2) & (vs30 < Vref))
          bnl[idx] = C['b2'] * np.log(vs30[idx] / Vref) / np.log(V2 / Vref)
          return bnl