This class simulates a multi-dimensional array by wrapping an one-dimensional array,
which is used specifically to store 'double' values.
For an arbitrary n-dimensional array "A" with dimensions "d1, d2, ..., dn",
we use an one-dimensional array "B" of size "m = d1 * d2 * ...