# package ocaml-base-compiler

One-dimensional arrays. The `Array1`

structure provides operations similar to those of `Bigarray.Genarray`

, but specialized to the case of one-dimensional arrays. (The `Array2`

and `Array3`

structures below provide operations specialized for two- and three-dimensional arrays.) Statically knowing the number of dimensions of the array allows faster operations, and more precise static type-checking.

The type of one-dimensional Bigarrays whose elements have OCaml type `'a`

, representation kind `'b`

, and memory layout `'c`

.

`Array1.create kind layout dim`

returns a new Bigarray of one dimension, whose size is `dim`

. `kind`

and `layout`

determine the array element kind and the array layout as described for `Genarray.create`

.

`Array1.init kind layout dim f`

returns a new Bigarray `b`

of one dimension, whose size is `dim`

. `kind`

and `layout`

determine the array element kind and the array layout as described for `Genarray.create`

.

Each element `Array1.get b i`

of the array is initialized to the result of `f i`

.

In other words, `Array1.init kind layout dimensions f`

tabulates the results of `f`

applied to the indices of a new Bigarray whose layout is described by `kind`

, `layout`

and `dim`

.

`val dim : ('a, 'b, 'c) t -> int`

Return the size (dimension) of the given one-dimensional Bigarray.

`Array1.change_layout a layout`

returns a Bigarray with the specified `layout`

, sharing the data with `a`

(and hence having the same dimension as `a`

). No copying of elements is involved: the new array and the original array share the same storage space.

`val size_in_bytes : ('a, 'b, 'c) t -> int`

`size_in_bytes a`

is the number of elements in `a`

multiplied by `a`

's `kind_size_in_bytes`

.

`val get : ('a, 'b, 'c) t -> int -> 'a`

`Array1.get a x`

, or alternatively `a.{x}`

, returns the element of `a`

at index `x`

. `x`

must be greater or equal than `0`

and strictly less than `Array1.dim a`

if `a`

has C layout. If `a`

has Fortran layout, `x`

must be greater or equal than `1`

and less or equal than `Array1.dim a`

. Otherwise, `Invalid_argument`

is raised.

`val set : ('a, 'b, 'c) t -> int -> 'a -> unit`

`Array1.set a x v`

, also written `a.{x} <- v`

, stores the value `v`

at index `x`

in `a`

. `x`

must be inside the bounds of `a`

as described in `Bigarray.Array1.get`

; otherwise, `Invalid_argument`

is raised.

Extract a sub-array of the given one-dimensional Bigarray. See `Genarray.sub_left`

for more details.

Extract a scalar (zero-dimensional slice) of the given one-dimensional Bigarray. The integer parameter is the index of the scalar to extract. See `Bigarray.Genarray.slice_left`

and `Bigarray.Genarray.slice_right`

for more details.

Copy the first Bigarray to the second Bigarray. See `Genarray.blit`

for more details.

`val fill : ('a, 'b, 'c) t -> 'a -> unit`

Fill the given Bigarray with the given value. See `Genarray.fill`

for more details.

Build a one-dimensional Bigarray initialized from the given array.

`val unsafe_get : ('a, 'b, 'c) t -> int -> 'a`

Like `Bigarray.Array1.get`

, but bounds checking is not always performed. Use with caution and only when the program logic guarantees that the access is within bounds.

`val unsafe_set : ('a, 'b, 'c) t -> int -> 'a -> unit`

Like `Bigarray.Array1.set`

, but bounds checking is not always performed. Use with caution and only when the program logic guarantees that the access is within bounds.