docs: def getQuadraturePointsAndWeights(self):
          '''Gets the quadrature points and weights for gaussian quadrature
          integration of inner products from the definition of the polynomials in
          each dimension.
  
  
          :return: (u_points, w_points) - np.ndarray of shape
              (num_polynomials, num_dimensions) and a np.ndarray of size
              (num_polynomials)
  
          :rtype: (np.ndarray, np.ndarray)
          '''
  
          qw_list, qp_list = [], []
          for ii in np.arange(len(self.J_list)):
  
              d, Q = np.linalg.eig(self.J_list[ii])
              qp, qpi = d[np.argsort(d)].reshape([d.size, 1]), np.argsort(d)
              qw = (Q[0, qpi]**2).reshape([d.size, 1])
  
              qw_list.append(qw)
              qp_list.append(qp)
  
          umesh = np.meshgrid(*qp_list)
          upoints = np.vstack([m.flatten() for m in umesh]).T
  
          wmesh = np.meshgrid(*qw_list)
          wpoints = np.vstack([m.flatten() for m in wmesh]).T
  
          return upoints, wpoints