'Returns the bound term related to precisions'

def _bound_precisions(self):

    logprior = 0.0
    if (self.covariance_type == 'spherical'):
        logprior += np.sum(gammaln(self.dof_))
        logprior -= np.sum(((self.dof_ - 1) * digamma(np.maximum(0.5, self.dof_))))
        logprior += np.sum((((- np.log(self.scale_)) + self.dof_) - self.precs_[:, 0]))
    elif (self.covariance_type == 'diag'):
        logprior += np.sum(gammaln(self.dof_))
        logprior -= np.sum(((self.dof_ - 1) * digamma(np.maximum(0.5, self.dof_))))
        logprior += np.sum((((- np.log(self.scale_)) + self.dof_) - self.precs_))
    elif (self.covariance_type == 'tied'):
        logprior += _bound_wishart(self.dof_, self.scale_, self.det_scale_)
    elif (self.covariance_type == 'full'):
        for k in range(self.n_components):
            logprior += _bound_wishart(self.dof_[k], self.scale_[k], self.det_scale_[k])
    return logprior
