示例#1
0
 Matrix<T> Matrix<T>::xxT() const
 {
   Q_ASSERT(constData() && size());
   int stride1(bytesPerLine());
   int stride2(bytesPerElement());
   if (type() == CV_64F)
   {
     Matrix<T> mulRes(rows(), rows());
     int dstStride1(mulRes.bytesPerLine());
     int dstStride2(mulRes.bytesPerElement());
     const Ipp64f* dataPtr(reinterpret_cast<const Ipp64f*>(constData()));
     Ipp64f* mulResPtr(reinterpret_cast<Ipp64f*>(mulRes.data()));
     IppStatus status(ippmMul_mt_64f(dataPtr, stride1, stride2, cols(), rows(),
                                     dataPtr, stride1, stride2, cols(), rows(),
                                     mulResPtr, dstStride1, dstStride2));
     Q_ASSERT(status == ippStsNoErr);
     return mulRes;
   }
   Q_ASSERT(!"CHECK");
   return *this * transposed();
 }
示例#2
0
文件: matrix.c 项目: Johnson13/xLearn
void matrix_transpose_product2_ipp(int Am, int An, int Bn, 
                                   const double *A, const double *B, 
                                   double *R) 
{
    ippmMul_mt_64f(A, An*8, 8, An, Am, B, An*8, 8, An, Bn, R, Bn*8, 8);
}