I have the following code that I don't feel is doing the right
--- In Boost-Users@yahoogroups.com, "David Johnson"
make some mistake or is the Multi-array code buggy?
There are several mistakes in this code snippet: The ranges passed to the extents parameter are half open. This means that the length of the range is the second number minus the first number. For example: range(1,nrows) // where nrows = 2 specifies a range of 1 ( == nrows-1). Your example is constructing an array of shape 1 x 5. To avoid this problem, I would probably rewrite your construction sequence as the following: B(extents[nrows][aSize]),fortran_storage_order()); B.reindex(1); It also appears that you are indexing the array backwards. The lines where you index as B[1][2] ... B[6][2] should be B[2][1] ... B[2][6]. I suspect that these indices are reversed because you are interfacing with fortran. The fortran_storage_order parameter to the array makes this reversal unnecessary. Cheers, ron
typedef array_type::extent_range range; array_type
B(boost::extents[range(1,nrows)][range(1,aSize)],b oost::fortran_storage_orde
r()); B[1][1] = 1.0; printf("\n first B11 %lf %lf %lf %lf %lf %lf",B[1][1],B[2][1],B[3][1],B[4][1],B[5][1],B[5][1]); printf("\n first B21 %lf %lf %lf %lf %lf %lf",B[1][2],B[2][2],B[3][2],B[4][2],B[5][2],B[6][2]); ...