code: public static long inlined(DMatrixRMaj a , DMatrixRMaj b , DMatrixRMaj c )
      {
          long timeBefore = System.currentTimeMillis();
  
          double dataA[] = a.data;
          double dataB[] = b.data;
          double dataC[] = c.data;
  
          double valA;
          int indexCbase= 0;
          int endOfKLoop = b.numRows*b.numCols;
  
          for( int i = 0; i < a.numRows; i++ ) {
              int indexA = i*a.numCols;
  
              // need to assign dataC to a value initially
              int indexB = 0;
              int indexC = indexCbase;
              int end = indexB + b.numCols;
  
              valA = dataA[indexA++];
  
              while( indexB < end ) {
                  dataC[indexC++] = valA*dataB[indexB++];
              }
  
              // now add to it
              while( indexB != endOfKLoop ) { // k loop
                  indexC = indexCbase;
                  end = indexB + b.numCols;
  
                  valA = dataA[indexA++];
  
                  while( indexB < end ) { // j loop
                      dataC[indexC++] += valA*dataB[indexB++];
                  }
              }
              indexCbase += c.numCols;
          }
  
          return System.currentTimeMillis() - timeBefore;
      }
docs: All reads/writes have been inline by hand