module Array1: sig .. endOne-dimensional arrays. The Array1 structure provides operations
similar to those of
Bigarray.Genarray, but specialized to the case of one-dimensional arrays.
(The Bigarray.Array2 and Bigarray.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.
type t('a, 'b, 'c);
The type of one-dimensional Bigarrays whose elements have
OCaml type 'a, representation kind 'b, and memory layout 'c.
let create:
(Bigarray.kind('a, 'b), Bigarray.layout('c), int) => t('a, 'b, '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 Bigarray.Genarray.create.
let init:
(Bigarray.kind('a, 'b), Bigarray.layout('c), int, int => 'a) =>
t('a, 'b, 'c);
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 Bigarray.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.
let dim: t('a, 'b, 'c) => int;
Return the size (dimension) of the given one-dimensional Bigarray.
let kind: t('a, 'b, 'c) => Bigarray.kind('a, 'b);
Return the kind of the given Bigarray.
let layout: t('a, 'b, 'c) => Bigarray.layout('c);
Return the layout of the given Bigarray.
let change_layout: (t('a, 'b, 'c), Bigarray.layout('d)) => t('a, 'b, 'd);
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.
let size_in_bytes: t('a, 'b, 'c) => int;
size_in_bytes a is the number of elements in a
multiplied by a's Bigarray.kind_size_in_bytes.
let get: (t('a, 'b, 'c), 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.
let set: (t('a, 'b, 'c), 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.
let sub: (t('a, 'b, 'c), int, int) => t('a, 'b, 'c);
Extract a sub-array of the given one-dimensional Bigarray.
See Bigarray.Genarray.sub_left for more details.
let slice: (t('a, 'b, 'c), int) => Bigarray.Array0.t('a, 'b, 'c);
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.
let blit: (t('a, 'b, 'c), t('a, 'b, 'c)) => unit;
Copy the first Bigarray to the second Bigarray.
See Bigarray.Genarray.blit for more details.
let fill: (t('a, 'b, 'c), 'a) => unit;
Fill the given Bigarray with the given value.
See Bigarray.Genarray.fill for more details.
let of_array:
(Bigarray.kind('a, 'b), Bigarray.layout('c), array('a)) => t('a, 'b, 'c);
Build a one-dimensional Bigarray initialized from the given array.
let unsafe_get: (t('a, 'b, 'c), 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.
let unsafe_set: (t('a, 'b, 'c), 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.