array-row-major-index (ANSI and GNU Common Lisp Document)

Next: array-total-size, Previous: array-rank, Up: Arrays Dictionary

#### 15.2.18 array-row-major-index [Function]

`array-row-major-index` array &rest subscripts ⇒ index

#### Arguments and Values::

array—an array.

subscripts—a list of valid array indices for the array.

index—a valid array row-major index for the array.

#### Description::

Computes the position according to the row-major ordering of array for the element that is specified by subscripts, and returns the offset of the element in the computed position from the beginning of array.

For a one-dimensional array, the result of array-row-major-index equals subscript.

array-row-major-index ignores fill pointers.

#### Examples::

     (setq a (make-array '(4 7) :element-type '(unsigned-byte 8)))
     (array-row-major-index a 1 2) ⇒  9
     (array-row-major-index
        (make-array '(2 3 4)
                    :element-type '(unsigned-byte 8)
                    :displaced-to a
                    :displaced-index-offset 4)
        0 2 1) ⇒  9

#### Notes::

A possible definition of array-row-major-index, with no error-checking, is

     (defun array-row-major-index (a &rest subscripts)
       (apply #'+ (maplist #'(lambda (x y)
                                (* (car x) (apply #'* (cdr y))))
                           subscripts
                           (array-dimensions a))))