code: def backward(self, y):
          r
          ys = np.maximum(y - self._lower, np.finfo(settings.float_type).eps)
          return ys + np.log(-np.expm1(-ys))
docs: r"""
          Inverse of the softplus transform:
          .. math::
  
             x = \log( \exp(y) - 1)
  
          The bound for the input y is [self._lower. inf[, self._lower is
          subtracted prior to any calculations. The implementation avoids overflow
          explicitly by applying the log sum exp trick:
          .. math::
  
             \log ( \exp(y) - \exp(0)) &= ys + \log( \exp(y-ys) - \exp(-ys)) \\
                                       &= ys + \log( 1 - \exp(-ys)
  
             ys = \max(0, y)
  
          As y can not be negative, ys could be replaced with y itself.
          However, in case :math:`y=0` this results in np.log(0). Hence the zero is
          replaced by a machine epsilon.
          .. math::
  
             ys = \max( \epsilon, y)