QuadGaussRuleInfo [ { rule_, numer_ }, point_ ] := Module [
  {xi, eta, p1, p2, i, j, w1, w2, m, info = { { Null, Null}, 0 }},
  If [ Length[rule] == 2, { p1,p2} = rule, p1=p2=rule];
  If [ Length[point]==2, {i,j}=point, m = point;
    j=Floor[(m-1)/p1]+1;i=m-p1*(j-1)];
  {xi,w1} = LineGaussRuleInfo[{p1,numer},i];
  {eta,w2}= LineGaussRuleinfo[{p2,numer},j];
  info={{xi,eta},w1*w2};
  If [ numer, Return[N[info,20]], Return[Simplify[info]]];
];