code: def _d_hammer_function(self, x, X_batch, r_x0, s_x0):
          
          dx = np.atleast_2d(x)[:,None,:]-np.atleast_2d(X_batch)[None,:,:]
          nm = np.sqrt((np.square(dx)).sum(-1))
          z = (nm- r_x0)/s_x0
          h_func = norm.cdf(z)
  
          d = 1./(s_x0*np.sqrt(2*np.pi)*h_func)*np.exp(-np.square(z)/2)/nm
          d[h_func<1e-50] = 0.
          d = d[:,:,None]
          return d.sum(axis=1)
docs: Computes the value of the penalizer (centered at x_0) at any x.