public static void multAdd_aux( DMatrix1Row a , DMatrix1Row b , DMatrix1Row c , double []aux )
    {
        if( a == c || b == c )
            throw new IllegalArgumentException("Neither 'a' or 'b' can be the same matrix as 'c'");
        else if( a.numCols != b.numRows ) {
            throw new MatrixDimensionException("The 'a' and 'b' matrices do not have compatible dimensions");
        }
        c.reshape(a.numRows,b.numCols);

        if( aux == null ) aux = new double[ b.numRows ];

        for( int j = 0; j < b.numCols; j++ ) {
            // create a copy of the column in B to avoid cache issues
            for( int k = 0; k < b.numRows; k++ ) {
                aux[k] = b.unsafe_get(k,j);
            }

            int indexA = 0;
            for( int i = 0; i < a.numRows; i++ ) {
                double total = 0;
                for( int k = 0; k < b.numRows; ) {
                    total += a.get(indexA++)*aux[k++];
                }
                c.plus( i*c.numCols+j , total );
            }
        }
    }
public static void multAdd_aux ( DMatrix1Row a , DMatrix1Row b , DMatrix1Row c , double [ ] aux ) { if ( a == c || b == c ) throw new IllegalArgumentException ( "Neither 'a' or 'b' can be the same matrix as 'c'" ) ; else if ( a . numCols != b . numRows ) { throw new MatrixDimensionException ( "The 'a' and 'b' matrices do not have compatible dimensions" ) ; } c . reshape ( a . numRows , b . numCols ) ; if ( aux == null ) aux = new double [ b . numRows ] ; for ( int j = 0 ; j < b . numCols ; j ++ ) { for ( int k = 0 ; k < b . numRows ; k ++ ) { aux [ k ] = b . unsafe_get ( k , j ) ; } int indexA = 0 ; for ( int i = 0 ; i < a . numRows ; i ++ ) { double total = 0 ; for ( int k = 0 ; k < b . numRows ; ) { total += a . get ( indexA ++ ) * aux [ k ++ ] ; } c . plus ( i * c . numCols + j , total ) ; } } }
@see CommonOps_DDRM#multAdd( org.ejml.data.DMatrix1Row, org.ejml.data.DMatrix1Row, org.ejml.data.DMatrix1Row)