* raw data = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 size[2] = { 4, 5 } // assume uniform overall array dimensions * row major (C) stride: stride[2] = { 5, 1 } offset[2] = { 0, 0 } for i: for j: result[i][j]: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 * column major (Fortran) stride: stride[2] = { 1, 4 } offset[2] = { 0, 0 } for i: for j: result[i][j]: 0 4 8 12 16 1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 * "crazy reverse" row major (C) stride: stride[2] = { -5, -1 } offset[2] = { 4, 5 } for i: for j: result[i][j]: 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0