def _compute_B_statistics(self, K, W, log_concave, *args, **kwargs):
<EOL>B = np.eye(K.shape[<NUM_LIT:0>]) + np.dot(K, W)<EOL>Bi = np.linalg.inv(B)<EOL>K_Wi_i = np.dot(W, Bi)<EOL>Ki_W_i = np.dot(Bi, K)<EOL>sign, logdetB = np.linalg.slogdet(B)<EOL>return K_Wi_i, sign*logdetB, Bi, Ki_W_i<EOL>
Rasmussen suggests the use of a numerically stable positive definite matrix B
Which has a positive diagonal element and can be easyily inverted

:param K: Prior Covariance matrix evaluated at locations X
:type K: NxN matrix
:param W: Negative hessian at a point (diagonal matrix)
:type W: Vector of diagonal values of hessian (1xN)
:returns: (K_Wi_i, L_B, not_provided)