code: def _compute_attenuation(self, rup, dists, imt, C):
          
  
          vec = np.ones(len(dists.rrup))
  
          a1 = (np.log10(np.sqrt(dists.rrup ** 2.0 + C['c11'] ** 2.0)),
                np.log10(70. * vec))
  
          a = np.column_stack([a1[0], a1[1]])
  
          b3 = (np.log10(np.sqrt(dists.rrup ** 2.0 + C['c11'] ** 2.0) /
                        (70. * vec)),
                np.log10((140. / 70.) * vec))
  
          b2 = np.column_stack([b3[0], b3[1]])
          b1 = ([np.min(b2, axis=1), 0. * vec])
          b = np.column_stack([b1[0], b1[1]])
  
          c1 = (np.log10(np.sqrt(dists.rrup ** 2.0 + C['c11'] ** 2.0) /
                (140.) * vec), 0. * vec)
          c = np.column_stack([c1[0], c1[1]])
  
          return (((C['c4'] + C['c5'] * rup.mag) * np.min(a, axis=1)) +
                  ((C['c6'] + C['c7'] * rup.mag) * np.max(b, axis=1)) +
                  ((C['c8'] + C['c9'] * rup.mag) * np.max(c, axis=1)))
docs: Compute the second term of the equation described on p. 1866:
  
          " [(c4 + c5 * M) * min{ log10(R), log10(70.) }] +
          [(c4 + c5 * M) * max{ min{ log10(R/70.), log10(140./70.) }, 0.}] +
          [(c8 + c9 * M) * max{ log10(R/140.), 0}] "