example, if then some entries are . For indices larger than 9, the comma-based notation may be preferable (e.g., a3,12 instead of a312). Matrix equations are written similarly to vector equations, such as in terms of the elements of the matrices (aka components) for all values of i and j. Again this expression represents a set of equations, one for each index. If the matrices each have m rows and n columns, meaning and , then there are mn equations. Multi-dimensional arrays The notation allows a clear generalization to multi-dimensional arrays of elements: tensors. For example, representing a set of many equations. In tensor analysis, superscripts are used instead of subscripts to distinguish covariant from contravariant entities, see covariance and contravariance of vectors and raising and lowering indices. In computing In several programming languages, index notation is a way of addressing elements of an array. This method is used since it is closest to how it is implemented in assembly language whereby the address of the first element is used as a base, and a multiple (the index) of the element size is used to address inside the array. For example, if an array of integers is stored in a region of the computer's memory starting at the memory cell with address 3000 (the base address), and each integer occupies four cells (bytes), then the elements of this array are at memory locations 0x3000, 0x3004, 0x3008, …, 0x3000 + 4(n − 1) (note the zero-based numbering). In general, the address of the ith element of an array with base address b and element size s is . Implementation details In the C programming language, we can write the above as (pointer form) or (array indexing form), which is exactly equivalent because the C standard defines the array indexing form as a transformation to pointer form. Coincidentally, since pointer addition is commutative, this allows for obscure expressions such as which is equivalent to . Multidimensional arrays Things become more interesting when we consider arrays with more than one index, for example, a two-dimensional table. We have three possibilities: make the two-dimensional array one-dimensional by computing a single index from the two consider a one-dimensional array where each element is another one-dimensional array, i.e. an array of arrays use additional storage to hold the array of addresses of each row of the original array, and store the rows of the original array