public BigMatrix mm(Transpose transA, BigMatrix A, Transpose transB, BigMatrix B) {
        return mm(transA, A, transB, B, 1.0, 0.0);
    }
@Test
    public void testMm() {
        System.out.println("mm");
        double[][] A = {
                { 0.7220180,  0.07121225, 0.6881997f},
                {-0.2648886, -0.89044952, 0.3700456f},
                {-0.6391588,  0.44947578, 0.6240573f}
        };
        double[][] B = {
                {0.6881997, -0.07121225,  0.7220180f},
                {0.3700456,  0.89044952, -0.2648886f},
                {0.6240573, -0.44947578, -0.6391588f}
        };
        double[][] C = {
                { 0.9527204, -0.2973347,  0.06257778f},
                {-0.2808735, -0.9403636, -0.19190231f},
                { 0.1159052,  0.1652528, -0.97941688f}
        };
        double[][] D = {
                { 0.9887140,  0.1482942, -0.0212965f},
                { 0.1482942, -0.9889421, -0.0015881f},
                {-0.0212965, -0.0015881, -0.9997719f}
        };
        double[][] E = {
                {0.0000,  0.0000, 1.0000f},
                {0.0000, -1.0000, 0.0000f},
                {1.0000,  0.0000, 0.0000f}
        };

        BigMatrix a = BigMatrix.of(A);
        BigMatrix b = BigMatrix.of(B);
        double[][] F = b.mm(a).transpose().toArray();

        assertTrue(MathEx.equals(a.mm(b).toArray(),   C, 1E-7));
        assertTrue(MathEx.equals(a.mt(b).toArray(),  D, 1E-7));
        assertTrue(MathEx.equals(a.tm(b).toArray(),  E, 1E-7));
        assertTrue(MathEx.equals(a.tt(b).toArray(), F, 1E-7));
    }