Set prior
        Set prior values
    Inputs :    
        m : 
            mean of the prior
        H : 
            precision matrix of the prior
    Hiddens :
        ln_H_ : log(det(H))/2
            calculate this once to use everytime log prior is called
        Hm    : < H, m >
            calculate this once to use everytime proposal is called

def prior(self, m, H):
        """
    Set prior
        Set prior values
    Inputs :    
        m : 
            mean of the prior
        H : 
            precision matrix of the prior
    Hiddens :
        ln_H_ : log(det(H))/2
            calculate this once to use everytime log prior is called
        Hm    : < H, m >
            calculate this once to use everytime proposal is called
        """
        if self._prior == True:
            raise Warning("prior information is already set")
        else: 
            self._prior = True

        # mean
        self._m = np.reshape(np.array(m), (-1,1))
        try : 
            assert np.size(self._m) == self._n
        except : 
            raise TypeError("mean has to be an array of size n")

        # precision
        self._H     = np.array(H)
        try : 
            assert np.shape(self._H) == (self._n, self._n)
        except : 
            raise TypeError("precision has to be a matrix of shape n by n")

        # precalculations
        self._ln_H_ = np.log(la.det(self._H))/2.
        self._Hm    = np.dot(self._H, self._m)