if( all.hasOrderedRep() ) {
innerProduct(const QDPType< TVec, OLattice<TVec> > &v1,	     const QDPType< TVec, OLattice<TVec> > &v2){  if( all.hasOrderedRep() ) {#ifdef DEBUG_BLAS    QDPIO::cout << "BJ: innerProduct all" << endl;#endif    // This BinaryReturn has Type_t    // OScalar<OScalar<OScalar<RComplex<PScalar<REAL> > > > >    BinaryReturn< OLattice<TVec>, OLattice<TVec>, FnInnerProduct>::Type_t lprod;    // Inner product is accumulated internally in DOUBLE    DOUBLE ip[2];    ip[0]=0;    ip[1]=0;    // Length of subset     unsigned long n_3vec = (all.end() - all.start() + 1)*Ns;        // Call My CDOT    local_vcdot(&(ip[0]), &(ip[1]),		(REAL *)&(v1.elem(all.start()).elem(0).elem(0).real()),		(REAL *)&(v2.elem(all.start()).elem(0).elem(0).real()),		n_3vec);    // Global sum -- still on a vector of doubles    Internal::globalSumArray(ip,2);    // Downcast (and possibly lose precision) here     lprod.elem().elem().elem().real() = (REAL)ip[0];    lprod.elem().elem().elem().imag() = (REAL)ip[1];    // Return    return lprod;  }  else {    // Do localInnerProduct    // then sum    return sum(localInnerProduct(v1, v2),all);  }}