i + n*jyourself to index by row and column. Avoid .NET's 2D arrays because they are several times slower than necessary. Really avoid F#'s
Matrixtype for element-wise operations because it has comparatively huge overheads like dynamic dispatch (an order of magnitude slower). Arrays of arrays are good but indexing yourself permits more JIT optimizations of the indexing.