docs: 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)