human
I wrote the below code

    l = (uw.size / 2)
    l_int = l.astype('int32')
    u = uw[:l_int]
    w = uw[l_int:]
    def logp_(input):
        return theano.clone(logp, {inarray: input}, strict=False)
    if (random_seed is None):
        r = MRG_RandomStreams(gen_random_state())
    else:
        r = MRG_RandomStreams(seed=random_seed)
    if (n_mcsamples == 1):
        n = r.normal(size=inarray.tag.test_value.shape)
        q = ((n * tt.exp(w)) + u)
        elbo = ((logp_(q) + tt.sum(w)) + ((0.5 * l) * (1 + tt.log((2.0 * np.pi)))))
    else:
        n = r.normal(size=(n_mcsamples, u.tag.test_value.shape[0]))
        qs = ((n * tt.exp(w)) + u)
        (logps, _) = theano.scan(fn=(lambda q: logp_(q)), outputs_info=None, sequences=[qs])
        elbo = ((tt.mean(logps) + tt.sum(w)) + ((0.5 * l) * (1 + tt.log((2.0 * np.pi)))))
    return elbo

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

def _elbo_t(logp, uw, inarray, n_mcsamples, random_seed):