innerProductReal(const multi1d< OLattice<TVec> > &v1, const multi1d< OLattice<TVec> > &v2, const OrderedSubset& s)
innerProductReal(const QDPType< TVec, OLattice<TVec> > &v1, const QDPType< TVec, OLattice<TVec> > &v2)
innerProductReal(const multi1d< OLattice<TVec> > &v1,		 const multi1d< OLattice<TVec> > &v2, 		 const OrderedSubset& s){#ifdef DEBUG_BLAS  QDPIO::cout << "BJ: innerProductReal s" << endl;#endif  // This BinaryReturn has Type_t  // OScalar<OScalar<OScalar<RScalar<PScalar<REAL> > > > >  BinaryReturn< OLattice<TVec>, OLattice<TVec>, FnInnerProductReal>::Type_t lprod;  DOUBLE ip_re=0;  unsigned long n_3vec = (s.end() - s.start() + 1)*Ns;  for(int n=0; n < v1.size(); ++n)  {    DOUBLE iip_re=0;    local_vcdot_real(&ip_re,		     (REAL *)&(v1[n].elem(s.start()).elem(0).elem(0).real()),		     (REAL *)&(v2[n].elem(s.start()).elem(0).elem(0).real()),		     n_3vec);    ip_re += iip_re;  }  Internal::globalSum(ip_re);  lprod.elem().elem().elem().elem() = (REAL)ip_re;    return lprod;}