Module Gg.Ba
Linear bigarrays and bigarray buffers.
WARNING. This interface is subject to change in the future.
This module has a few convenience functions for linear (1D) bigarrays.
The purpose of buffer
is to allow to specify a few more data types than bigarrays are able to express and facilitate the generic handling of linear bigarrays.
Scalar types
type ('a, 'b) ba_scalar_type
=
|
Int8 : (int, Bigarray.int8_signed_elt) ba_scalar_type
|
Int16 : (int, Bigarray.int16_signed_elt) ba_scalar_type
|
Int32 : (int32, Bigarray.int32_elt) ba_scalar_type
|
Int64 : (int64, Bigarray.int64_elt) ba_scalar_type
|
UInt8 : (int, Bigarray.int8_unsigned_elt) ba_scalar_type
|
UInt16 : (int, Bigarray.int16_unsigned_elt) ba_scalar_type
|
UInt32 : (int32, Bigarray.int32_elt) ba_scalar_type
|
UInt64 : (int64, Bigarray.int64_elt) ba_scalar_type
|
Float16 : (int, Bigarray.int16_unsigned_elt) ba_scalar_type
|
Float32 : (float, Bigarray.float32_elt) ba_scalar_type
|
Float64 : (float, Bigarray.float64_elt) ba_scalar_type
The type for bigarray scalar types.
val ba_kind_of_ba_scalar_type : ('a, 'b) ba_scalar_type -> ('a, 'b) Bigarray.kind
ba_kind_of_ba_scalar_type st
is the bigarray kind corresponding tost
.
type scalar_type
=[
|
`Int8
|
`Int16
|
`Int32
|
`Int64
|
`UInt8
|
`UInt16
|
`UInt32
|
`UInt64
|
`Float16
|
`Float32
|
`Float64
]
The type for buffer scalar types.
val scalar_type_of_ba_scalar_type : ('a, 'b) ba_scalar_type -> scalar_type
scalar_type_of_ba_scalar_type st
is the scalar type corresponding tost
.
val scalar_type_byte_count : scalar_type -> int
scalar_type_byte_count st
is the number of bytes used by a scalar of typest
.
val pp_scalar_type : Stdlib.Format.formatter -> scalar_type -> unit
pp_scalar_type ppf st
prints a textual representation ofst
onppf
.
Bigarray buffers
module Buffer : sig ... end
Bigarrays
val create : ('a, 'b) ba_scalar_type -> int -> ('a, 'b) bigarray
create k count
is a bigarray of kindk
withcount
scalars.
val length : ('a, 'b) bigarray -> int
length ba
is the length ofba
.
val sub : ('a, 'b) bigarray -> int -> int -> ('a, 'b) bigarray
sub ba i len
are thei
th toi
th +n
scalars ofba
as a bigarray. Note, this is not a copy.
val blit : ('a, 'b) bigarray -> int -> ('a, 'b) bigarray -> int -> int -> unit
blit src si dst di len
copieslen
scalar values starting atsi
insrc
todst
starting atdi
.
val fill : ('a, 'b) bigarray -> 'a -> unit
fill ba v
sets each scalar value ofba
tov
.
val of_array : ('a, 'b) ba_scalar_type -> 'a array -> ('a, 'b) bigarray
of_array st a
is a bigarray from arraya
.
val of_list : ('a, 'b) ba_scalar_type -> 'a list -> ('a, 'b) bigarray
of_list st l
is a bigarray from listl
.
val of_bytes : ?be:bool -> ('a, 'b) ba_scalar_type -> string -> ('a, 'b) bigarray
of_bytes be s k
is a bigarray of kindk
froms
. ifbe
istrue
data is assumed to be in big endian order (defaults tofalse
).TODO For now only
Int8
andUInt8
are supported.- raises Invalid_argument
if given an unsupported kind or if the data length is not a multiple of the requested scalar type.
val pp : ?count:int -> ?stride:int -> ?first:int -> ?dim:int -> pp_scalar:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> ('a, 'b) bigarray -> unit
pp count stride first dim pp_scalar ppf b
prints onppf
,count
groups of sizedim
of scalars ofb
, starting atfirst
usingpp_scalar
, and stridingstride
scalars to go from group to group. Ifcount
is unspecified prints as much as possible.stride
defaults todim
,first
defaults to0
anddim
to1
.
Getting
val get_v2 : (float, 'b) bigarray -> int -> v2
get_v2 b i
is thei
th toi+1
th scalars ofb
as a vector.
val get_v3 : (float, 'b) bigarray -> int -> v3
get_v3 b i
is thei
th toi+2
th scalars ofb
as a vector.
val get_v4 : (float, 'b) bigarray -> int -> v4
get_v4 b i
is thei
th toi+3
th scalars ofb
as a vector.
val get_2d : ('a, 'b) bigarray -> int -> 'a * 'a
get_v2 b i
is thei
th toi+1
th scalars ofb
.
val get_3d : ('a, 'b) bigarray -> int -> 'a * 'a * 'a
get_v3 b i
is thei
th toi+2
th scalars ofb
.
val get_4d : ('a, 'b) bigarray -> int -> 'a * 'a * 'a * 'a
get_v4 b i
is thei
th toi+3
th scalars ofb
.
int32 Bigarray
val geti_2d : (int32, 'b) bigarray -> int -> int * int
get_v2 b i
is thei
th toi+1
th scalars ofb
. The integers are converted withInt32
.to_int.
val geti_3d : (int32, 'b) bigarray -> int -> int * int * int
get_v3 b i
is thei
th toi+2
th scalars ofb
. The integers are converted withInt32
.to_int
Setting
val set_v2 : (float, 'b) bigarray -> int -> v2 -> unit
set_v2 b i v
sets thei
th toi+1
th scalars ofb
withv
.
val set_v3 : (float, 'b) bigarray -> int -> v3 -> unit
set_v3 b i v
sets thei
th toi+2
th scalars ofb
withv
.
val set_v4 : (float, 'b) bigarray -> int -> v4 -> unit
set_v4 b i v
sets thei
th toi+3
th scalars ofb
withv
.
val set_2d : ('a, 'b) bigarray -> int -> 'a -> 'a -> unit
set_2d b i s1 s2
sets thei
th toi+1
th scalar ofb
tos1
,s2
.
val set_3d : ('a, 'b) bigarray -> int -> 'a -> 'a -> 'a -> unit
set_3d b i s1 s2 s3
sets thei
th toi+2
th scalar ofb
tos1
,s2
,s3
.
val set_4d : ('a, 'b) bigarray -> int -> 'a -> 'a -> 'a -> 'a -> unit
set_4d b i s1 s2 s3 s4
sets thei
th toi+3
th scalar ofb
tos1
,s2
,s3
,s4
.
int32 Bigarray
val seti_2d : (int32, 'b) bigarray -> int -> int -> int -> unit
set_2d b i s1 s2
sets thei
th toi+1
th scalar ofb
tos1
,s2
.
val seti_3d : (int32, 'b) bigarray -> int -> int -> int -> int -> unit
set_3d b i s1 s2 s3
sets thei
th toi+2
th scalar ofb
tos1
,s2
,s3
.