public static void propagateTwoVectors(DenseMatrix64F matrix, DenseMatrix64F vector1, DenseMatrix64F vector2,  double alpha, int begin1, int end1, int begin2, int end2) {

        double[] matrixData = matrix.getData();
        double[] vector1Data = vector1.getData();
        double[] vector2Data = vector2.getData();
        int colCount = matrix.numCols;

        for (int i = begin1; i < end1; ++i) {
            for (int j = begin2; j < end2; ++j) {

                matrixData[i + j * colCount] += alpha * vector1Data[j] * vector2Data[i];
            }
        }

    }