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(); }
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); }