void MatOp_GEMM::transpose(const MatExpr& e, MatExpr& res) const
{
res = e;
- res.flags ^= CV_GEMM_A_T | CV_GEMM_B_T | CV_GEMM_C_T;
+ res.flags = (!(e.flags & CV_GEMM_A_T) ? CV_GEMM_B_T : 0) |
+ (!(e.flags & CV_GEMM_B_T) ? CV_GEMM_A_T : 0) |
+ (!(e.flags & CV_GEMM_C_T) ? CV_GEMM_C_T : 0);
swap(res.a, res.b);
}
split(mf2, mvf2);
CV_Assert( norm(mvf2[0], mvf[0], CV_C) == 0 &&
norm(mvf2[1], mvf[1], CV_C) == 0 );
+
+ {
+ Mat a(2,2,CV_32F,1.f);
+ Mat b(1,2,CV_32F,1.f);
+ Mat c = (a*b.t()).t();
+ CV_Assert( norm(c, CV_L1) == 4. );
+ }
}
catch (const test_excep& e)
{