'Log of the survival function of the given RV.
Returns the log of the "survival function," defined as 1 - `cdf`,
evaluated at `k`.
Parameters
k : array_like
Quantiles.
arg1, arg2, arg3,... : array_like
The shape parameter(s) for the distribution (see docstring of the
instance object for more information).
loc : array_like, optional
Location parameter (default=0).
Returns
logsf : ndarray
Log of the survival function evaluated at `k`.'

def logsf(self, k, *args, **kwds):

    (args, loc, _) = self._parse_args(*args, **kwds)
    (k, loc) = map(asarray, (k, loc))
    args = tuple(map(asarray, args))
    k = asarray((k - loc))
    cond0 = self._argcheck(*args)
    cond1 = ((k >= self.a) & (k < self.b))
    cond2 = ((k < self.a) & cond0)
    cond = (cond0 & cond1)
    output = empty(shape(cond), 'd')
    output.fill(NINF)
    place(output, ((1 - cond0) + np.isnan(k)), self.badvalue)
    place(output, cond2, 0.0)
    if np.any(cond):
        goodargs = argsreduce(cond, *((k,) + args))
        place(output, cond, self._logsf(*goodargs))
    if (output.ndim == 0):
        return output[()]
    return output
