def logsf(self, x, *args, **kwds):
args, loc, scale = self._parse_args(*args, **kwds)<EOL>x, loc, scale = map(asarray, (x, loc, scale))<EOL>args = tuple(map(asarray, args))<EOL>x = (x-loc)*<NUM_LIT:1.0>/scale<EOL>cond0 = self._argcheck(*args) & (scale > <NUM_LIT:0>)<EOL>cond1 = (scale > <NUM_LIT:0>) & (x > self.a) & (x < self.b)<EOL>cond2 = cond0 & (x <= self.a)<EOL>cond = cond0 & cond1<EOL>output = empty(shape(cond), '<STR_LIT:d>')<EOL>output.fill(NINF)<EOL>place(output, (<NUM_LIT:1>-cond0)+np.isnan(x), self.badvalue)<EOL>place(output, cond2, <NUM_LIT:0.0>)<EOL>if any(cond):<EOL><INDENT>goodargs = argsreduce(cond, *((x,)+args))<EOL>place(output, cond, self._logsf(*goodargs))<EOL><DEDENT>if output.ndim == <NUM_LIT:0>:<EOL><INDENT>return output[()]<EOL><DEDENT>return output<EOL>
Log of the survival function of the given RV.

Returns the log of the "survival function," defined as (1 - `cdf`),
evaluated at `x`.

Parameters
----------
x : 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)
scale : array_like, optional
    scale parameter (default=1)

Returns
-------
logsf : ndarray
    Log of the survival function evaluated at `x`.