package owl

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Owl_dense_ndarray_genericSource

N-dimensional array module: including creation, manipulation, and various vectorised mathematical operations.

About the comparison of two complex numbers x and y, Owl uses the following conventions: 1) x and y are equal iff both real and imaginary parts are equal; 2) x is less than y if the magnitude of x is less than the magnitude of y; in case both x and y have the same magnitudes, x is less than y if the phase of x is less than the phase of y; 3) less or equal, greater, greater or equal relation can be further defined atop of the aforementioned conventions.

The generic module supports operations for the following Bigarry element types: Int8_signed, Int8_unsigned, Int16_signed, Int16_unsigned, Int32, Int64, Float32, Float64, Complex32, Complex64.

Type definition
Sourcetype ('a, 'b) t = ('a, 'b, Bigarray.c_layout) Bigarray.Genarray.t

N-dimensional array type, i.e. Bigarray Genarray type.

Sourcetype ('a, 'b) kind = ('a, 'b) Bigarray.kind

Type of the ndarray, e.g., Bigarray.Float32, Bigarray.Complex64, and etc.

Create Ndarrays
Sourceval empty : ('a, 'b) kind -> int array -> ('a, 'b) t

empty Bigarray.Float64 [|3;4;5|] creates a three diemensional array of Bigarray.Float64 type. Each dimension has the following size: 3, 4, and 5. The elements in the array are not initialised, they can be any value. empty is faster than zeros to create a ndarray.

The module only supports the following four types of ndarray: Bigarray.Float32, Bigarray.Float64, Bigarray.Complex32, and Bigarray.Complex64.

Sourceval create : ('a, 'b) kind -> int array -> 'a -> ('a, 'b) t

create Bigarray.Float64 [|3;4;5|] 2. creates a three-diemensional array of Bigarray.Float64 type. Each dimension has the following size: 3, 4, and 5. The elements in the array are initialised to 2.

Sourceval init : ('a, 'b) kind -> int array -> (int -> 'a) -> ('a, 'b) t

init Bigarray.Float64 d f creates a ndarray x of shape d, then using f to initialise the elements in x. The input of f is 1-dimensional index of the ndarray. You need to explicitly convert it if you need N-dimensional index. The function ind can help you.

Sourceval init_nd : ('a, 'b) kind -> int array -> (int array -> 'a) -> ('a, 'b) t

init_nd is almost the same as init but f receives n-dimensional index as input. It is more convenient since you don't have to convert the index by yourself, but this also means init_nd is slower than init.

Sourceval zeros : ('a, 'b) kind -> int array -> ('a, 'b) t

zeros Bigarray.Complex32 [|3;4;5|] creates a three-diemensional array of Bigarray.Complex32 type. Each dimension has the following size: 3, 4, and 5. The elements in the array are initialised to "zero". Depending on the kind, zero can be 0. or Complex.zero.

Sourceval ones : ('a, 'b) kind -> int array -> ('a, 'b) t

ones Bigarray.Complex32 [|3;4;5|] creates a three-diemensional array of Bigarray.Complex32 type. Each dimension has the following size: 3, 4, and 5. The elements in the array are initialised to "one". Depending on the kind, one can be 1. or Complex.one.

Sourceval eye : ('a, 'b) kind -> int -> ('a, 'b) t

eye m creates an m by m identity matrix.

Sourceval uniform : ('a, 'b) kind -> ?a:'a -> ?b:'a -> int array -> ('a, 'b) t

uniform Bigarray.Float64 [|3;4;5|] creates a three-diemensional array of type Bigarray.Float64. Each dimension has the following size: 3, 4, and 5. The elements in the array follow a uniform distribution 0,1.

Sourceval gaussian : ('a, 'b) kind -> ?mu:'a -> ?sigma:'a -> int array -> ('a, 'b) t

gaussian Float64 [|3;4;5|] ...

Sourceval poisson : ('a, 'b) kind -> mu:float -> int array -> ('a, 'b) t

poisson Float64 [|3;4;5|] ...

Sourceval sequential : ('a, 'b) kind -> ?a:'a -> ?step:'a -> int array -> ('a, 'b) t

sequential Bigarray.Float64 [|3;4;5|] 2. creates a three-diemensional array of type Bigarray.Float64. Each dimension has the following size: 3, 4, and 5. The elements in the array are assigned sequential values.

?a specifies the starting value and the default value is zero; whilst ?step specifies the step size with default value one.

Sourceval linspace : ('a, 'b) kind -> 'a -> 'a -> int -> ('a, 'b) t

linspace k 0. 9. 10 ...

Sourceval logspace : ('a, 'b) kind -> ?base:float -> 'a -> 'a -> int -> ('a, 'b) t

logspace k 0. 9. 10 ...

Sourceval bernoulli : ('a, 'b) kind -> ?p:float -> int array -> ('a, 'b) t

bernoulli k ~p:0.3 [|2;3;4|]

Sourceval complex : ('a, 'b) kind -> ('c, 'd) kind -> ('a, 'b) t -> ('a, 'b) t -> ('c, 'd) t

complex re im constructs a complex ndarray/matrix from re and im. re and im contain the real and imaginary part of x respectively.

Note that both re and im can be complex but must have same type. The real part of re will be the real part of x and the imaginary part of im will be the imaginary part of x.

Sourceval polar : ('a, 'b) kind -> ('c, 'd) kind -> ('a, 'b) t -> ('a, 'b) t -> ('c, 'd) t

complex rho theta constructs a complex ndarray/matrix from polar coordinates rho and theta. rho contains the magnitudes and theta contains phase angles. Note that the behaviour is undefined if rho has negative elelments or theta has infinity elelments.

Sourceval unit_basis : ('a, 'b) kind -> int -> int -> ('a, 'b) t

unit_basis k n i returns a unit basis vector with ith element set to 1.

Obtain basic properties
Sourceval shape : ('a, 'b) t -> int array

shape x returns the shape of ndarray x.

Sourceval num_dims : ('a, 'b) t -> int

num_dims x returns the number of dimensions of ndarray x.

Sourceval nth_dim : ('a, 'b) t -> int -> int

nth_dim x returns the size of the nth dimension of x.

Sourceval numel : ('a, 'b) t -> int

numel x returns the number of elements in x.

Sourceval nnz : ('a, 'b) t -> int

nnz x returns the number of non-zero elements in x.

Sourceval density : ('a, 'b) t -> float

density x returns the percentage of non-zero elements in x.

Sourceval size_in_bytes : ('a, 'b) t -> int

size_in_bytes x returns the size of x in bytes in memory.

Sourceval same_shape : ('a, 'b) t -> ('c, 'd) t -> bool

same_shape x y checks whether x and y has the same shape or not.

Sourceval same_data : ('a, 'b) t -> ('a, 'b) t -> bool

same_data x y checks whether x and y share the same underlying data in the memory. Namely, both variables point to the same memory address. This is done by checking the Data pointer in the Bigarray structure.

This function is very useful for avoiding unnecessary copying between two ndarrays especially if one has been reshaped or sliced.

Sourceval kind : ('a, 'b) t -> ('a, 'b) kind

kind x returns the type of ndarray x. It is one of the four possible values: Bigarray.Float32, Bigarray.Float64, Bigarray.Complex32, and Bigarray.Complex64.

Sourceval strides : ('a, 'b) t -> int array

strides x calculates the strides of x. E.g., if x is of shape [|3;4;5|], the returned strides will be [|20;5;1|].

Sourceval slice_size : ('a, 'b) t -> int array

slice_size calculates the slice size in each dimension, E.g., if x is of shape [|3;4;5|], the returned slice size will be [|60; 20; 5|].

Sourceval ind : ('a, 'b) t -> int -> int array

ind x i converts x's one-dimensional index i to n-dimensional one.

Sourceval i1d : ('a, 'b) t -> int array -> int

i1d x i converts x's n-dimensional index i to one-dimensional one.

Manipulate Ndarrays
Sourceval get : ('a, 'b) t -> int array -> 'a

get x i returns the value at i in x. E.g., get x [|0;2;1|] returns the value at [|0;2;1|] in x.

Sourceval set : ('a, 'b) t -> int array -> 'a -> unit

set x i a sets the value at i to a in x.

Sourceval get_index : ('a, 'b) t -> int array array -> 'a array

get_index i x returns an array of element values specified by the indices i. The length of array i equals the number of dimensions of x. The arrays in i must have the same length, and each represents the indices in that dimension.

E.g., [| [|1;2|]; [|3;4|] |] returns the value of elements at position (1,3) and (2,4) respectively.

Sourceval set_index : ('a, 'b) t -> int array array -> 'a array -> unit

set_index i x a sets the value of elements in x according to the indices specified by i. The length of array i equals the number of dimensions of x. The arrays in i must have the same length, and each represents the indices in that dimension.

If the length of a equals to the length of i, then each element will be assigned by the value in the corresponding position in x. If the length of a equals to one, then all the elements will be assigned the same value.

Sourceval get_fancy : Owl_types.index list -> ('a, 'b) t -> ('a, 'b) t

get_fancy s x returns a copy of the slice in x. The slice is defined by a which is an int option array. E.g., for a ndarray x of dimension [|2; 2; 3|], slice [0] x takes the following slices of index \(0,*,*\), i.e., [|0;0;0|], [|0;0;1|], [|0;0;2|] ... Also note that if the length of s is less than the number of dimensions of x, slice function will append slice definition to higher diemensions by assuming all the elements in missing dimensions will be taken.

Basically, slice function offers very much the same semantic as that in numpy, i.e., start:stop:step grammar, so if you how to index and slice ndarray in numpy, you should not find it difficult to use this function. Please just refer to numpy documentation or my tutorial.

There are two differences between slice_left and slice: slice_left does not make a copy but simply moving the pointer; slice_left can only make a slice from left-most axis whereas slice is much more flexible and can work on arbitrary axis which need not start from left-most side.

Sourceval set_fancy : Owl_types.index list -> ('a, 'b) t -> ('a, 'b) t -> unit

set_fancy axis x y set the slice defined by axis in x according to the values in y. y must have the same shape as the one defined by axis.

About the slice definition of axis, please refer to get_fancy function.

Sourceval get_fancy_ext : Owl_types.index array -> ('a, 'b) t -> ('a, 'b) t

This function is used for extended indexing operator since ocaml 4.10.0. The indexing and slicing syntax become much ligher.

Sourceval set_fancy_ext : Owl_types.index array -> ('a, 'b) t -> ('a, 'b) t -> unit

This function is used for extended indexing operator since ocaml 4.10.0. The indexing and slicing syntax become much ligher.

Sourceval get_slice : int list list -> ('a, 'b) t -> ('a, 'b) t

get_slice axis x aims to provide a simpler version of get_fancy. This function assumes that every list element in the passed in int list list represents a range, i.e., R constructor.

E.g., [[];[0;3];[0]] is equivalent to [R []; R [0;3]; R [0]].

Sourceval set_slice : int list list -> ('a, 'b) t -> ('a, 'b) t -> unit

set_slice axis x y aims to provide a simpler version of set_fancy. This function assumes that every list element in the passed in int list list represents a range, i.e., R constructor.

E.g., [[];[0;3];[0]] is equivalent to [R []; R [0;3]; R [0]].

Sourceval get_slice_ext : int list array -> ('a, 'b) t -> ('a, 'b) t

get_slice_ext axis x is used for extended indexing operator since ocaml 4.10.0. The indexing and slicing syntax become much ligher.

E.g., x.%{0;1;2}.

Sourceval set_slice_ext : int list array -> ('a, 'b) t -> ('a, 'b) t -> unit

Similar to get_slice_ext axis x, this function is used for extended indexing operator since ocaml 4.10.0. The indexing and slicing syntax become much ligher.

Sourceval sub_left : ('a, 'b) t -> int -> int -> ('a, 'b) t

Some as Bigarray.sub_left, please refer to Bigarray documentation.

Sourceval sub_ndarray : int array -> ('a, 'b) t -> ('a, 'b) t array

sub_ndarray parts x is similar to Bigarray.sub_left. It splits the passed in ndarray x along the axis 0 according to parts. The elelments in parts do not need to be equal but they must sum up to the dimension along axis zero.

The returned sub-ndarrays share the same memory as x. Because there is no copies made, this function is much faster than using `split` function to divide the lowest dimensionality of x.

Sourceval slice_left : ('a, 'b) t -> int array -> ('a, 'b) t

Same as Bigarray.slice_left, please refer to Bigarray documentation.

Sourceval reset : ('a, 'b) t -> unit

reset x resets all the elements in x to zero.

Sourceval fill : ('a, 'b) t -> 'a -> unit

fill x a assigns the value a to the elements in x.

Sourceval copy : ('a, 'b) t -> ('a, 'b) t

copy x makes a copy of x.

Sourceval resize : ?head:bool -> ('a, 'b) t -> int array -> ('a, 'b) t

resize ~head x d resizes the ndarray x. If there are less number of elelments in the new shape than the old one, the new ndarray shares part of the memory with the old x. head indicates the alignment between the new and old data, either from head or from tail. Note the data is flattened before the operation.

If there are more elements in the new shape d. Then new memory space will be allocated and the content of x will be copied to the new memory. The rest of the allocated space will be filled with zeros. The default value of head is true.

Sourceval reshape : ('a, 'b) t -> int array -> ('a, 'b) t

reshape x d transforms x into a new shape definted by d. Note the reshape function will not make a copy of x, the returned ndarray shares the same memory with the original x.

One shape dimension (only one) can be set to -1. In this case, the value is inferred from the length of the array and remaining dimensions.

Sourceval flatten : ('a, 'b) t -> ('a, 'b) t

flatten x transforms x into a one-dimsonal array without making a copy. Therefore the returned value shares the same memory space with original x.

Sourceval reverse : ('a, 'b) t -> ('a, 'b) t

reverse x reverse the order of all elements in the flattened x and returns the results in a new ndarray. The original x remains intact.

Sourceval flip : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

flip ~axis x flips a matrix/ndarray along axis. By default axis = 0. The result is returned in a new matrix/ndarray, so the original x remains intact.

Sourceval rotate : ('a, 'b) t -> int -> ('a, 'b) t

rotate x d rotates x clockwise d degrees. d must be multiple times of 90, otherwise the function will fail. If x is an n-dimensional array, then the function rotates the plane formed by the first and second dimensions.

Sourceval transpose : ?axis:int array -> ('a, 'b) t -> ('a, 'b) t

transpose ~axis x makes a copy of x, then transpose it according to ~axis. ~axis must be a valid permutation of x dimension indices. E.g., for a three-dimensional ndarray, it can be [2;1;0], [0;2;1], [1;2;0], and etc.

Sourceval swap : int -> int -> ('a, 'b) t -> ('a, 'b) t

swap i j x makes a copy of x, then swaps the data on axis i and j.

Sourceval tile : ('a, 'b) t -> int array -> ('a, 'b) t

tile x a tiles the data in x according the repetition specified by a. This function provides the exact behaviour as numpy.tile, please refer to the numpy's online documentation for details.

Sourceval repeat : ('a, 'b) t -> int array -> ('a, 'b) t

repeat x a repeats the elements of x according the repetition specified by a. The i-th element of a specifies the number of times that the individual entries of the i-th dimension of x should be repeated.

Sourceval concat_vertical : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

concat_vertical x y concatenates two ndarray x and y vertically. This is just a convenient function for concatenating two ndarrays along their lowest dimension, i.e. 0.

The associated operator is @||, please refer to :doc:`owl_operator`.

Sourceval concat_horizontal : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

concat_horizontal x y concatenates two ndarrays x and y horizontally. This is just a convenient function for concatenating two ndarrays along their highest dimension.

The associated operator is @=, please refer to :doc:`owl_operator`.

Sourceval concat_vh : ('a, 'b) t array array -> ('a, 'b) t

concat_vh is used to assemble small parts of matrices into a bigger one. E.g. In [| [|a; b; c|]; [|d; e; f|]; [|g; h; i|] |], wherein `a, b, c ... i` are matrices of different shapes. They will be concatenated into a big matrix as follows.

.. math:: \beginmatrix a & b & c \\ d & e & f \\ g & h & i \endmatrix

This is achieved by first concatenating along axis:1 for each element in the array, then concatenating along axis:0. The number of elements in each array needs not to be equal as long as the aggregated dimensions match. E.g., please check the following example.

.. code-block:: ocaml

let a00 = Mat.sequential 2 3 in let a01 = Mat.sequential 2 2 in let a02 = Mat.sequential 2 1 in let a10 = Mat.sequential 3 3 in let a11 = Mat.sequential 3 3 in Mat.concat_vh | [|a00; a01; a02|]; [|a10; a11|] |;;

Sourceval concatenate : ?axis:int -> ('a, 'b) t array -> ('a, 'b) t

concatenate ~axis:2 x concatenates an array of ndarrays along the third dimension. For the ndarrays in x, they must have the same shape except the dimension specified by axis. The default value of axis is 0, i.e., the lowest dimension of a matrix/ndarray.

Sourceval stack : ?axis:int -> ('a, 'b) t array -> ('a, 'b) t

stack ~axis x stacks an array of ndarrays along the axis dimension. For example, if x contains K ndarrays of shape |2;3|, then stack ~axis:1 x will return an ndarray of dimensions |2;K;3|. The ndarrays in x, they must all have the same shape. The default value of axis is 0.

Sourceval split : ?axis:int -> int array -> ('a, 'b) t -> ('a, 'b) t array

split ~axis parts x splits an ndarray x into parts along the specified axis. This function is the inverse operation of concatenate. The elements in x must sum up to the dimension in the specified axis.

Sourceval split_vh : (int * int) array array -> ('a, 'b) t -> ('a, 'b) t array array

split_vh parts x splits a passed in ndarray x along the first two dimensions, i.e. axis 0 and axis 1. This is the inverse operation of concat_vh function, and the function is very useful in dividing a big matrix into smaller (especially heterogeneous) parts.

For example, given a matrix x of shape [|8;10|], it is possible to split in the following ways.

.. code-block:: ocaml

Mat.split_vh | [|(8,5);(8,5)|] | x;; Mat.split_vh | [|(4,5);(4,5)|]; [|(4,10)|] | x;; Mat.split_vh | [|(4,5);(4,5)|]; [|(4,5);(4,5)|] | x;;

Sourceval squeeze : ?axis:int array -> ('a, 'b) t -> ('a, 'b) t

squeeze ~axis x removes single-dimensional entries from the shape of x.

Sourceval expand : ?hi:bool -> ('a, 'b) t -> int -> ('a, 'b) t

expand x d reshapes x by increasing its rank from num_dims x to d. The opposite operation is squeeze x. The hi parameter is used to specify whether the expandsion is along high dimension (by setting true), or along the low dimension (by setting false). The default value is false.

Sourceval pad : ?v:'a -> int list list -> ('a, 'b) t -> ('a, 'b) t

pad ~v p x pads a ndarray x with a constant value v. The padding index p is a list of lists of 2 integers. These two integers denote padding width at both edges of one dimension of x.

Sourceval dropout : ?rate:float -> ('a, 'b) t -> ('a, 'b) t

dropout ~rate:0.3 x drops out 30% of the elements in x, in other words, by setting their values to zeros.

Sourceval top : ('a, 'b) t -> int -> int array array

top x n returns the indices of n greatest values of x. The indices are arranged according to the corresponding element values, from the greatest one to the smallest one.

Sourceval bottom : ('a, 'b) t -> int -> int array array

bottom x n returns the indices of n smallest values of x. The indices are arranged according to the corresponding element values, from the smallest one to the greatest one.

Sourceval sort1 : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

sort1 ~axis x performs quicksort of the elements along specific axis in x. A new copy is returned as result, the original x remains intact.

Sourceval sort : ('a, 'b) t -> ('a, 'b) t

sort x performs quicksort of the elelments in x. A new copy is returned as result, the original x remains intact. If you want to perform in-place sorting, please use `sort_` instead.

Sourceval argsort : ('a, 'b) t -> (int64, Bigarray.int64_elt) t

argsort x returns the indices with which the elements in x are sorted in increasing order. Note that the returned index ndarray has the same shape as that of x, and the indices are 1D indices.

Sourceval draw : ?axis:int -> ('a, 'b) t -> int -> ('a, 'b) t * int array

draw ~axis x n draws n samples from x along the specified axis, with replacement. axis is set to zero by default. The return is a tuple of both samples and the indices of the selected samples.

Sourceval mmap : Unix.file_descr -> ?pos:int64 -> ('a, 'b) kind -> bool -> int array -> ('a, 'b) t

mmap fd kind layout shared dims ...

Iteration functions
Sourceval iteri : (int -> 'a -> unit) -> ('a, 'b) t -> unit

iteri f x applies function f to each element in x. Note that 1d index is passed to function f, you need to convert it to nd-index by yourself.

Sourceval iter : ('a -> unit) -> ('a, 'b) t -> unit

iter f x is similar to iteri f x, except the index is not passed to f.

Sourceval mapi : (int -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

mapi f x makes a copy of x, then applies f to each element in x.

Sourceval map : ('a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

map f x is similar to mapi f x except the index is not passed.

Sourceval foldi : ?axis:int -> (int -> 'a -> 'a -> 'a) -> 'a -> ('a, 'b) t -> ('a, 'b) t

foldi ~axis f a x folds (or reduces) the elements in x from left along the specified axis using passed in function f. a is the initial element and in f i acc b acc is the accumulater and b is one of the elements in x along the same axis. Note that i is 1d index of b.

Sourceval fold : ?axis:int -> ('a -> 'a -> 'a) -> 'a -> ('a, 'b) t -> ('a, 'b) t

Similar to foldi, except that the index of an element is not passed to f.

Sourceval scani : ?axis:int -> (int -> 'a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

scan ~axis f x scans the x along the specified axis using passed in function f. f acc a b returns an updated acc which will be passed in the next call to f i acc a. This function can be used to implement accumulative operations such as sum and prod functions. Note that the i is 1d index of a in x.

Sourceval scan : ?axis:int -> ('a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

Similar to scani, except that the index of an element is not passed to f.

Sourceval filteri : (int -> 'a -> bool) -> ('a, 'b) t -> int array

filteri f x uses f to filter out certain elements in x. An element will be included if f returns true. The returned result is an array of 1-dimensional indices of the selected elements. To obtain the n-dimensional indices, you need to convert it manually with Owl's helper function.

Sourceval filter : ('a -> bool) -> ('a, 'b) t -> int array

Similar to filteri, but the indices are not passed to f.

Sourceval iter2i : (int -> 'a -> 'b -> unit) -> ('a, 'c) t -> ('b, 'd) t -> unit

Similar to iteri but applies to two N-dimensional arrays x and y. Both x and y must have the same shape.

Sourceval iter2 : ('a -> 'b -> unit) -> ('a, 'c) t -> ('b, 'd) t -> unit

Similar to iter2i, except that the index not passed to f.

Sourceval map2i : (int -> 'a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

map2i f x y applies f to two elements of the same position in both x and y. Note that 1d index is passed to function f.

Sourceval map2 : ('a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

map2 f x y is similar to map2i f x y except the index is not passed.

Sourceval iteri_nd : (int array -> 'a -> unit) -> ('a, 'b) t -> unit

Similar to iteri but n-d indices are passed to the user function.

Sourceval mapi_nd : (int array -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

Similar to mapi but n-d indices are passed to the user function.

Sourceval foldi_nd : ?axis:int -> (int array -> 'a -> 'a -> 'a) -> 'a -> ('a, 'b) t -> ('a, 'b) t

Similar to foldi but n-d indices are passed to the user function.

Sourceval scani_nd : ?axis:int -> (int array -> 'a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t

Similar to scani but n-d indices are passed to the user function.

Sourceval filteri_nd : (int array -> 'a -> bool) -> ('a, 'b) t -> int array array

Similar to filteri but n-d indices are returned.

Sourceval iter2i_nd : (int array -> 'a -> 'c -> unit) -> ('a, 'b) t -> ('c, 'd) t -> unit

Similar to iter2i but n-d indices are passed to the user function.

Sourceval map2i_nd : (int array -> 'a -> 'a -> 'a) -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

Similar to map2i but n-d indices are passed to the user function.

Sourceval iteri_slice : ?axis:int -> (int -> ('a, 'b) t -> unit) -> ('a, 'b) t -> unit

iteri_slice ~axis f x iterates the slices along the specified axis in x and applies the function f. The 1-d index of of the slice is passed in. By default, the axis is 0. Setting axis to the highest dimension is not allowed because in that case you can just use `iteri` to iterate all the elements in x which is more efficient.

Note that the slice is obtained by slicing left (due to Owl's C-layout ndarray) a sub-array out of x. E.g., if x has shape [|3;4;5|], setting axis=0 will iterate three 4 x 5 matrices. The slice shares the same memory with x so no copy is made.

Sourceval iter_slice : ?axis:int -> (('a, 'b) t -> unit) -> ('a, 'b) t -> unit

Similar to iteri_slice but slice index is not passed in.

Sourceval mapi_slice : ?axis:int -> (int -> ('a, 'b) t -> 'c) -> ('a, 'b) t -> 'c array

mapi_slice ~axis f x maps the slices along the specified axis in x and applies the function f. By default, axis is 0. The index of of the slice is passed in.

Please refer to iteri_slice for more details.

Sourceval map_slice : ?axis:int -> (('a, 'b) t -> 'c) -> ('a, 'b) t -> 'c array

Similar to mapi_slice but slice index is not passed in.

Sourceval filteri_slice : ?axis:int -> (int -> ('a, 'b) t -> bool) -> ('a, 'b) t -> ('a, 'b) t array

filteri_slice ~axis f x filters the slices along the specified axis in x. The slices which satisfy the predicate f are returned in an array.

Please refer to iteri_slice for more details.

Sourceval filter_slice : ?axis:int -> (('a, 'b) t -> bool) -> ('a, 'b) t -> ('a, 'b) t array

Similar to filteri_slice but slice index is not passed in.

Sourceval foldi_slice : ?axis:int -> (int -> 'c -> ('a, 'b) t -> 'c) -> 'c -> ('a, 'b) t -> 'c

foldi_slice ~axis f a x fold (left) the slices along the specified axis in x. The slices which satisfy the predicate f are returned in an array.

Please refer to iteri_slice for more details.

Sourceval fold_slice : ?axis:int -> ('c -> ('a, 'b) t -> 'c) -> 'c -> ('a, 'b) t -> 'c

Similar to foldi_slice but slice index is not passed in.

Examination & Comparison
Sourceval exists : ('a -> bool) -> ('a, 'b) t -> bool

exists f x checks all the elements in x using f. If at least one element satisfies f then the function returns true otherwise false.

Sourceval not_exists : ('a -> bool) -> ('a, 'b) t -> bool

not_exists f x checks all the elements in x, the function returns true only if all the elements fail to satisfy f : float -> bool.

Sourceval for_all : ('a -> bool) -> ('a, 'b) t -> bool

for_all f x checks all the elements in x, the function returns true if and only if all the elements pass the check of function f.

Sourceval is_zero : ('a, 'b) t -> bool

is_zero x returns true if all the elements in x are zeros.

Sourceval is_positive : ('a, 'b) t -> bool

is_positive x returns true if all the elements in x are positive.

Sourceval is_negative : ('a, 'b) t -> bool

is_negative x returns true if all the elements in x are negative.

Sourceval is_nonpositive : ('a, 'b) t -> bool

is_nonpositive returns true if all the elements in x are non-positive.

Sourceval is_nonnegative : ('a, 'b) t -> bool

is_nonnegative returns true if all the elements in x are non-negative.

Sourceval is_normal : ('a, 'b) t -> bool

is_normal x returns true if all the elelments in x are normal float numbers, i.e., not NaN, not INF, not SUBNORMAL. Please refer to

https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.html https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html#Infinity-and-NaN

Sourceval not_nan : ('a, 'b) t -> bool

not_nan x returns false if there is any NaN element in x. Otherwise, the function returns true indicating all the numbers in x are not NaN.

Sourceval not_inf : ('a, 'b) t -> bool

not_inf x returns false if there is any positive or negative INF element in x. Otherwise, the function returns true.

Sourceval equal : ('a, 'b) t -> ('a, 'b) t -> bool

equal x y returns true if two matrices x and y are equal.

Sourceval not_equal : ('a, 'b) t -> ('a, 'b) t -> bool

not_equal x y returns true if there is at least one element in x is not equal to that in y.

Sourceval greater : ('a, 'b) t -> ('a, 'b) t -> bool

greater x y returns true if all the elements in x are greater than the corresponding elements in y.

Sourceval less : ('a, 'b) t -> ('a, 'b) t -> bool

less x y returns true if all the elements in x are smaller than the corresponding elements in y.

Sourceval greater_equal : ('a, 'b) t -> ('a, 'b) t -> bool

greater_equal x y returns true if all the elements in x are not smaller than the corresponding elements in y.

Sourceval less_equal : ('a, 'b) t -> ('a, 'b) t -> bool

less_equal x y returns true if all the elements in x are not greater than the corresponding elements in y.

Sourceval elt_equal : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_equal x y performs element-wise = comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a = b.

The function supports broadcast operation.

Sourceval elt_not_equal : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_not_equal x y performs element-wise != comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a <> b.

The function supports broadcast operation.

Sourceval elt_less : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_less x y performs element-wise < comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a < b.

The function supports broadcast operation.

Sourceval elt_greater : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_greater x y performs element-wise > comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a > b.

The function supports broadcast operation.

Sourceval elt_less_equal : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_less_equal x y performs element-wise <= comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a <= b.

The function supports broadcast operation.

Sourceval elt_greater_equal : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

elt_greater_equal x y performs element-wise >= comparison of x and y. Assume that a is from x and b is the corresponding element of a from y of the same position. The function returns another binary (0 and 1) ndarray/matrix wherein 1 indicates a >= b.

The function supports broadcast operation.

Sourceval equal_scalar : ('a, 'b) t -> 'a -> bool

equal_scalar x a checks if all the elements in x are equal to a. The function returns true iff for every element b in x, b = a.

Sourceval not_equal_scalar : ('a, 'b) t -> 'a -> bool

not_equal_scalar x a checks if all the elements in x are not equal to a. The function returns true iff for every element b in x, b <> a.

Sourceval less_scalar : ('a, 'b) t -> 'a -> bool

less_scalar x a checks if all the elements in x are less than a. The function returns true iff for every element b in x, b < a.

Sourceval greater_scalar : ('a, 'b) t -> 'a -> bool

greater_scalar x a checks if all the elements in x are greater than a. The function returns true iff for every element b in x, b > a.

Sourceval less_equal_scalar : ('a, 'b) t -> 'a -> bool

less_equal_scalar x a checks if all the elements in x are less or equal to a. The function returns true iff for every element b in x, b <= a.

Sourceval greater_equal_scalar : ('a, 'b) t -> 'a -> bool

greater_equal_scalar x a checks if all the elements in x are greater or equal to a. The function returns true iff for every element b in x, b >= a.

Sourceval elt_equal_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_equal_scalar x a performs element-wise = comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a = b, otherwise 0.

Sourceval elt_not_equal_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_not_equal_scalar x a performs element-wise != comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a <> b, otherwise 0.

Sourceval elt_less_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_less_scalar x a performs element-wise < comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a < b, otherwise 0.

Sourceval elt_greater_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_greater_scalar x a performs element-wise > comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a > b, otherwise 0.

Sourceval elt_less_equal_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_less_equal_scalar x a performs element-wise <= comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a <= b, otherwise 0.

Sourceval elt_greater_equal_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

elt_greater_equal_scalar x a performs element-wise >= comparison of x and a. Assume that b is one element from x The function returns another binary (0 and 1) ndarray/matrix wherein 1 of the corresponding position indicates a >= b, otherwise 0.

Sourceval approx_equal : ?eps:float -> ('a, 'b) t -> ('a, 'b) t -> bool

approx_equal ~eps x y returns true if x and y are approximately equal, i.e., for any two elements a from x and b from y, we have abs (a - b) < eps. For complex numbers, the eps applies to both real and imaginary part.

Note: the threshold check is exclusive for passed in eps, i.e., the threshold interval is (a-eps, a+eps).

Sourceval approx_equal_scalar : ?eps:float -> ('a, 'b) t -> 'a -> bool

approx_equal_scalar ~eps x a returns true all the elements in x are approximately equal to a, i.e., abs (x - a) < eps. For complex numbers, the eps applies to both real and imaginary part.

Note: the threshold check is exclusive for the passed in eps.

Sourceval approx_elt_equal : ?eps:float -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

approx_elt_equal ~eps x y compares the element-wise equality of x and y, then returns another binary (i.e., 0 and 1) ndarray/matrix wherein 1 indicates that two corresponding elements a from x and b from y are considered as approximately equal, namely abs (a - b) < eps.

Sourceval approx_elt_equal_scalar : ?eps:float -> ('a, 'b) t -> 'a -> ('a, 'b) t

approx_elt_equal_scalar ~eps x a compares all the elements of x to a scalar value a, then returns another binary (i.e., 0 and 1) ndarray/matrix wherein 1 indicates that the element b from x is considered as approximately equal to a, namely abs (a - b) < eps.

Input/Output functions
Sourceval of_array : ('a, 'b) kind -> 'a array -> int array -> ('a, 'b) t

of_array k x d takes an array x and converts it into an ndarray of type k and shape d.

Sourceval to_array : ('a, 'b) t -> 'a array

to_array x converts an ndarray x to OCaml's array type. Note that the ndarray x is flattened before conversion.

Sourceval print : ?max_row:int -> ?max_col:int -> ?header:bool -> ?fmt:('a -> string) -> ('a, 'b) t -> unit

print x prints all the elements in x as well as their indices. max_row and max_col specify the maximum number of rows and columns to display. header specifies whether or not to print out the headers. fmt is the function to format every element into string.

Sourceval pp_dsnda : Format.formatter -> ('a, 'b) t -> unit

pp_dsnda x prints x in OCaml toplevel. If the ndarray is too long, pp_dsnda only prints out parts of the ndarray.

Sourceval save : out:string -> ('a, 'b) t -> unit

save ~out x serialises a ndarray x to a file of name out.

Sourceval load : ('a, 'b) kind -> string -> ('a, 'b) t

load k s loads previously serialised ndarray from file s into memory. It is necessary to specify the type of the ndarray with parameter k.

Sourceval save_npy : out:string -> ('a, 'b) t -> unit

save_npy ~out x saves the matrix x into a npy file out. This function is implemented using npy-ocaml https://github.com/LaurentMazare/npy-ocaml.

Sourceval load_npy : ('a, 'b) kind -> string -> ('a, 'b) t

load_npy file load a npy file into a matrix of type k. If the matrix is in the file is not of type k, fails with [file]: incorrect format. This function is implemented using npy-ocaml https://github.com/LaurentMazare/npy-ocaml.

Unary math operators

re_c2s x returns all the real components of x in a new ndarray of same shape.

re_d2z x returns all the real components of x in a new ndarray of same shape.

im_c2s x returns all the imaginary components of x in a new ndarray of same shape.

im_d2z x returns all the imaginary components of x in a new ndarray of same shape.

Sourceval sum : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

sum ~axis x sums the elements in x along specified axis.

Sourceval sum' : ('a, 'b) t -> 'a

sum' x returns the sumtion of all elements in x.

Sourceval sum_reduce : ?axis:int array -> ('a, 'b) t -> ('a, 'b) t

sum_reduce ~axis x sums the elements in x along multiple axes specified in the axis array.

Sourceval prod : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

prod ~axis x multiples the elements in x along specified axis.

Sourceval prod' : ('a, 'b) t -> 'a

prod x returns the product of all elements in x along passed in axises.

Sourceval mean : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

mean ~axis x calculates the mean along specified axis.

Sourceval mean' : ('a, 'b) t -> 'a

mean' x calculates the mean of all the elements in x.

Sourceval median : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

median ~axis x calculates the median along specified axis of x.

Sourceval median' : ('a, 'b) t -> 'a

median x calculates the median of a flattened version of x.

Sourceval var : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

var ~axis x calculates the variance along specified axis.

Sourceval var' : ('a, 'b) t -> 'a

var' x calculates the variance of all the elements in x.

Sourceval std : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

std ~axis calculates the standard deviation along specified axis.

Sourceval std' : ('a, 'b) t -> 'a

std' x calculates the standard deviation of all the elements in x.

Sourceval sem : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

sem ~axis calculates the standard error of mean along specified axis.

Sourceval sem' : ('a, 'b) t -> 'a

sem' x calculates the standard error of mean of all the elements in x.

Sourceval min : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

min x returns the minimum of all elements in x along specified axis. If no axis is specified, x will be flattened and the minimum of all the elements will be returned. For two complex numbers, the one with the smaller magnitude will be selected. If two magnitudes are the same, the one with the smaller phase will be selected.

Sourceval min' : ('a, 'b) t -> 'a

min' x is similar to min but returns the minimum of all elements in x in scalar value.

Sourceval max : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

max x returns the maximum of all elements in x along specified axis. If no axis is specified, x will be flattened and the maximum of all the elements will be returned. For two complex numbers, the one with the greater magnitude will be selected. If two magnitudes are the same, the one with the greater phase will be selected.

Sourceval max' : ('a, 'b) t -> 'a

max' x is similar to max but returns the maximum of all elements in x in scalar value.

Sourceval minmax : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t * ('a, 'b) t

minmax' x returns (min_v, max_v), min_v is the minimum value in x while max_v is the maximum.

Sourceval minmax' : ('a, 'b) t -> 'a * 'a

minmax' x returns (min_v, max_v), min_v is the minimum value in x while max_v is the maximum.

Sourceval min_i : ('a, 'b) t -> 'a * int array

min_i x returns the minimum of all elements in x as well as its index.

Sourceval max_i : ('a, 'b) t -> 'a * int array

max_i x returns the maximum of all elements in x as well as its index.

Sourceval minmax_i : ('a, 'b) t -> ('a * int array) * ('a * int array)

minmax_i x returns ((min_v,min_i), (max_v,max_i)) where (min_v,min_i) is the minimum value in x along with its index while (max_v,max_i) is the maximum value along its index.

Sourceval abs : ('a, 'b) t -> ('a, 'b) t

abs x returns the absolute value of all elements in x in a new ndarray.

abs_c2s x is similar to abs but takes complex32 as input.

abs_z2d x is similar to abs but takes complex64 as input.

Sourceval abs2 : ('a, 'b) t -> ('a, 'b) t

abs2 x returns the square of absolute value of all elements in x in a new ndarray.

abs2_c2s x is similar to abs2 but takes complex32 as input.

abs2_z2d x is similar to abs2 but takes complex64 as input.

Sourceval conj : ('a, 'b) t -> ('a, 'b) t

conj x returns the conjugate of the complex x.

Sourceval neg : ('a, 'b) t -> ('a, 'b) t

neg x negates the elements in x and returns the result in a new ndarray.

Sourceval reci : ('a, 'b) t -> ('a, 'b) t

reci x computes the reciprocal of every elements in x and returns the result in a new ndarray.

Sourceval reci_tol : ?tol:'a -> ('a, 'b) t -> ('a, 'b) t

reci_tol ~tol x computes the reciprocal of every element in x. Different from reci, reci_tol sets the elements whose abs value smaller than tol to zeros. If tol is not specified, the default Owl_utils.eps Float32 will be used. For complex numbers, refer to Owl's doc to see how to compare.

Sourceval signum : (float, 'a) t -> (float, 'a) t

signum computes the sign value (-1 for negative numbers, 0 (or -0) for zero, 1 for positive numbers, nan for nan).

Sourceval sqr : ('a, 'b) t -> ('a, 'b) t

sqr x computes the square of the elements in x and returns the result in a new ndarray.

Sourceval sqrt : ('a, 'b) t -> ('a, 'b) t

sqrt x computes the square root of the elements in x and returns the result in a new ndarray.

Sourceval cbrt : ('a, 'b) t -> ('a, 'b) t

cbrt x computes the cubic root of the elements in x and returns the result in a new ndarray.

Sourceval exp : ('a, 'b) t -> ('a, 'b) t

exp x computes the exponential of the elements in x and returns the result in a new ndarray.

Sourceval exp2 : ('a, 'b) t -> ('a, 'b) t

exp2 x computes the base-2 exponential of the elements in x and returns the result in a new ndarray.

Sourceval exp10 : ('a, 'b) t -> ('a, 'b) t

exp10 x computes the base-10 exponential of the elements in x and returns the result in a new ndarray.

Sourceval expm1 : ('a, 'b) t -> ('a, 'b) t

expm1 x computes exp x -. 1. of the elements in x and returns the result in a new ndarray.

Sourceval log : ('a, 'b) t -> ('a, 'b) t

log x computes the logarithm of the elements in x and returns the result in a new ndarray.

Sourceval log10 : ('a, 'b) t -> ('a, 'b) t

log10 x computes the base-10 logarithm of the elements in x and returns the result in a new ndarray.

Sourceval log2 : ('a, 'b) t -> ('a, 'b) t

log2 x computes the base-2 logarithm of the elements in x and returns the result in a new ndarray.

Sourceval log1p : ('a, 'b) t -> ('a, 'b) t

log1p x computes log (1 + x) of the elements in x and returns the result in a new ndarray.

Sourceval sin : ('a, 'b) t -> ('a, 'b) t

sin x computes the sine of the elements in x and returns the result in a new ndarray.

Sourceval cos : ('a, 'b) t -> ('a, 'b) t

cos x computes the cosine of the elements in x and returns the result in a new ndarray.

Sourceval tan : ('a, 'b) t -> ('a, 'b) t

tan x computes the tangent of the elements in x and returns the result in a new ndarray.

Sourceval asin : ('a, 'b) t -> ('a, 'b) t

asin x computes the arc sine of the elements in x and returns the result in a new ndarray.

Sourceval acos : ('a, 'b) t -> ('a, 'b) t

acos x computes the arc cosine of the elements in x and returns the result in a new ndarray.

Sourceval atan : ('a, 'b) t -> ('a, 'b) t

atan x computes the arc tangent of the elements in x and returns the result in a new ndarray.

Sourceval sinh : ('a, 'b) t -> ('a, 'b) t

sinh x computes the hyperbolic sine of the elements in x and returns the result in a new ndarray.

Sourceval cosh : ('a, 'b) t -> ('a, 'b) t

cosh x computes the hyperbolic cosine of the elements in x and returns the result in a new ndarray.

Sourceval tanh : ('a, 'b) t -> ('a, 'b) t

tanh x computes the hyperbolic tangent of the elements in x and returns the result in a new ndarray.

Sourceval asinh : ('a, 'b) t -> ('a, 'b) t

asinh x computes the hyperbolic arc sine of the elements in x and returns the result in a new ndarray.

Sourceval acosh : ('a, 'b) t -> ('a, 'b) t

acosh x computes the hyperbolic arc cosine of the elements in x and returns the result in a new ndarray.

Sourceval atanh : ('a, 'b) t -> ('a, 'b) t

atanh x computes the hyperbolic arc tangent of the elements in x and returns the result in a new ndarray.

Sourceval floor : ('a, 'b) t -> ('a, 'b) t

floor x computes the floor of the elements in x and returns the result in a new ndarray.

Sourceval ceil : ('a, 'b) t -> ('a, 'b) t

ceil x computes the ceiling of the elements in x and returns the result in a new ndarray.

Sourceval round : ('a, 'b) t -> ('a, 'b) t

round x rounds the elements in x and returns the result in a new ndarray.

Sourceval trunc : ('a, 'b) t -> ('a, 'b) t

trunc x computes the truncation of the elements in x and returns the result in a new ndarray.

Sourceval fix : ('a, 'b) t -> ('a, 'b) t

fix x rounds each element of x to the nearest integer toward zero. For positive elements, the behavior is the same as floor. For negative ones, the behavior is the same as ceil.

Sourceval modf : ('a, 'b) t -> ('a, 'b) t * ('a, 'b) t

modf x performs modf over all the elements in x, the fractal part is saved in the first element of the returned tuple whereas the integer part is saved in the second element.

Sourceval erf : (float, 'a) t -> (float, 'a) t

erf x computes the error function of the elements in x and returns the result in a new ndarray.

Sourceval erfc : (float, 'a) t -> (float, 'a) t

erfc x computes the complementary error function of the elements in x and returns the result in a new ndarray.

Sourceval logistic : (float, 'a) t -> (float, 'a) t

logistic x computes the logistic function 1/(1 + exp(-a) of the elements in x and returns the result in a new ndarray.

Sourceval relu : (float, 'a) t -> (float, 'a) t

relu x computes the rectified linear unit function max(x, 0) of the elements in x and returns the result in a new ndarray.

Sourceval elu : ?alpha:float -> (float, 'a) t -> (float, 'a) t

elu alpha x computes the exponential linear unit function x >= 0. ? x : (alpha * (exp(x) - 1)) of the elements in x and returns the result in a new ndarray.

Sourceval leaky_relu : ?alpha:float -> (float, 'a) t -> (float, 'a) t

leaky_relu alpha x computes the leaky rectified linear unit function x >= 0. ? x : (alpha * x) of the elements in x and returns the result in a new ndarray.

Sourceval softplus : (float, 'a) t -> (float, 'a) t

softplus x computes the softplus function log(1 + exp(x) of the elements in x and returns the result in a new ndarray.

Sourceval softsign : (float, 'a) t -> (float, 'a) t

softsign x computes the softsign function x / (1 + abs(x)) of the elements in x and returns the result in a new ndarray.

Sourceval softmax : ?axis:int -> (float, 'a) t -> (float, 'a) t

softmax x computes the softmax functions (exp x) / (sum (exp x)) of all the elements along the specified axis in x and returns the result in a new ndarray.

By default, axis = -1, i.e. along the highest dimension.

Sourceval sigmoid : (float, 'a) t -> (float, 'a) t

sigmoid x computes the sigmoid function 1 / (1 + exp (-x)) for each element in x.

Sourceval log_sum_exp' : (float, 'a) t -> float

log_sum_exp x computes the logarithm of the sum of exponentials of all the elements in x.

Sourceval log_sum_exp : ?axis:int -> ?keep_dims:bool -> (float, 'a) t -> (float, 'a) t

log_sum_exp ~axis x computes the logarithm of the sum of exponentials of all the elements in x along axis axis.

Sourceval l1norm : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

l1norm x calculates the l1-norm of of x along specified axis.

Sourceval l1norm' : ('a, 'b) t -> 'a

l1norm x calculates the l1-norm of all the element in x.

Sourceval l2norm : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

l2norm x calculates the l2-norm of of x along specified axis.

Sourceval l2norm' : ('a, 'b) t -> 'a

l2norm x calculates the l2-norm of all the element in x.

Sourceval l2norm_sqr : ?axis:int -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

l2norm_sqr x calculates the square l2-norm of of x along specified axis.

Sourceval l2norm_sqr' : ('a, 'b) t -> 'a

l2norm_sqr x calculates the square of l2-norm (or l2norm, Euclidean norm) of all elements in x. The function uses conjugate transpose in the product, hence it always returns a float number.

Sourceval vecnorm : ?axis:int -> ?p:float -> ?keep_dims:bool -> ('a, 'b) t -> ('a, 'b) t

vecnorm ~axis ~p x calculates the generalised vector p-norm along the specified axis. The generalised p-norm is defined as below.

.. math:: ||v||_p = \Big \sum_{k=0}^{N-1} |v_k|^p \Big^

/p

Parameters: * axis is the axis for reduction. * p is order of norm, default value is 2. * x is the input ndarray.

Returns: * If p = infinity, then returns :math:`||v||_\infty = \max_i(|v(i)|)`. * If p = -infinity, then returns :math:`||v||_

\infty

}

= \min_i(|v(i)|)`. * Otherwise returns generalised vector p-norm defined above.

Sourceval vecnorm' : ?p:float -> ('a, 'b) t -> 'a

vecnorm' flattens the input into 1-d vector first, then calculates the generalised p-norm the same as venorm.

Sourceval cumsum : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

cumsum ~axis x : performs cumulative sum of the elements along the given axis ~axis. If ~axis is None, then the cumsum is performed along the lowest dimension. The returned result however always remains the same shape.

Sourceval cumprod : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

cumprod ~axis x : similar to cumsum but performs cumulative product of the elements along the given ~axis.

Sourceval cummin : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

cummin ~axis x : performs cumulative min along axis dimension.

Sourceval cummax : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

cummax ~axis x : performs cumulative max along axis dimension.

Sourceval diff : ?axis:int -> ?n:int -> ('a, 'b) t -> ('a, 'b) t

diff ~axis ~n x calculates the n-th difference of x along the specified axis.

Parameters: * axis: axis to calculate the difference. The default value is the highest dimension. * n: how many times to calculate the difference. The default value is 1.

Return: * The difference ndarray y. Note that the shape of y 1 less than that of x along specified axis.

Sourceval angle : (Complex.t, 'a) t -> (Complex.t, 'a) t

angle x calculates the phase angle of all complex numbers in x.

Sourceval proj : (Complex.t, 'a) t -> (Complex.t, 'a) t

proj x computes the projection on Riemann sphere of all elelments in x.

Sourceval lgamma : ('a, 'b) t -> ('a, 'b) t

lgamma x computes the loggamma of the elements in x and returns the result in a new ndarray.

Sourceval dawsn : ('a, 'b) t -> ('a, 'b) t

dawsn x computes the Dawson function of the elements in x and returns the result in a new ndarray.

Sourceval i0 : ('a, 'b) t -> ('a, 'b) t

i0 x computes the modified Bessel function of order 0 of the elements in x and returns the result in a new ndarray.

Sourceval i0e : ('a, 'b) t -> ('a, 'b) t

i0e x computes the exponentially scaled modified Bessel function of order 0 of the elements in x and returns the result in a new ndarray.

Sourceval i1 : ('a, 'b) t -> ('a, 'b) t

i1 x computes the modified Bessel function of order 1 of the elements in x and returns the result in a new ndarray.

Sourceval i1e : ('a, 'b) t -> ('a, 'b) t

i1e x computes the exponentially scaled modified Bessel function of order 1 of the elements in x and returns the result in a new ndarray.

Sourceval iv : v:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

iv v x computes modified Bessel function of x of real order v

Sourceval scalar_iv : v:'a -> ('a, 'b) t -> ('a, 'b) t

scalar_iv v x computes the modified Bessel function of x of real order v.

Sourceval iv_scalar : v:('a, 'b) t -> 'a -> ('a, 'b) t

iv_scalar v x computes modified Bessel function of x of real order v

Sourceval j0 : ('a, 'b) t -> ('a, 'b) t

j0 x computes the Bessel function of order 0 of the elements in x and returns the result in a new ndarray.

Sourceval j1 : ('a, 'b) t -> ('a, 'b) t

j1 x computes the Bessel function of order 1 of the elements in x and returns the result in a new ndarray.

Sourceval jv : v:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

jv v x computes Bessel function the first kind of x of real order v

Sourceval scalar_jv : v:'a -> ('a, 'b) t -> ('a, 'b) t

scalar_jv v x computes the Bessel function of the first kind of x of real order v.

Sourceval jv_scalar : v:('a, 'b) t -> 'a -> ('a, 'b) t

jv_scalar v x computes Bessel function of the first kind of x of real order v

Binary math operators
Sourceval add : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

add x y adds all the elements in x and y elementwise, and returns the result in a new ndarray.

General broadcast operation is automatically applied to add/sub/mul/div, etc. The function compares the dimension element-wise from the highest to the lowest with the following broadcast rules (same as numpy): 1. equal; 2. either is 1.

Sourceval sub : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

sub x y subtracts all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval mul : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

mul x y multiplies all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval div : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

div x y divides all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval add_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

add_scalar x a adds a scalar value a to each element in x, and returns the result in a new ndarray.

Sourceval sub_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

sub_scalar x a subtracts a scalar value a from each element in x, and returns the result in a new ndarray.

Sourceval mul_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

mul_scalar x a multiplies each element in x by a scalar value a, and returns the result in a new ndarray.

Sourceval div_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

div_scalar x a divides each element in x by a scalar value a, and returns the result in a new ndarray.

Sourceval scalar_add : 'a -> ('a, 'b) t -> ('a, 'b) t

scalar_add a x adds a scalar value a to each element in x, and returns the result in a new ndarray.

Sourceval scalar_sub : 'a -> ('a, 'b) t -> ('a, 'b) t

scalar_sub a x subtracts each element in x from a scalar value a, and returns the result in a new ndarray.

Sourceval scalar_mul : 'a -> ('a, 'b) t -> ('a, 'b) t

scalar_mul a x multiplies each element in x by a scalar value a, and returns the result in a new ndarray.

Sourceval scalar_div : 'a -> ('a, 'b) t -> ('a, 'b) t

scalar_div a x divides a scalar value a by each element in x, and returns the result in a new ndarray.

Sourceval pow : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

pow x y computes pow(a, b) of all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval scalar_pow : 'a -> ('a, 'b) t -> ('a, 'b) t

scalar_pow a x computes the power value of a scalar value a using the elements in a ndarray x.

Sourceval pow_scalar : ('a, 'b) t -> 'a -> ('a, 'b) t

pow_scalar x a computes each element in x power to a.

Sourceval atan2 : (float, 'a) t -> (float, 'a) t -> (float, 'a) t

atan2 x y computes atan2(a, b) of all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval scalar_atan2 : float -> (float, 'a) t -> (float, 'a) t

scalar_atan2 a x

Sourceval atan2_scalar : (float, 'a) t -> float -> (float, 'a) t

scalar_atan2 x a

Sourceval hypot : (float, 'a) t -> (float, 'a) t -> (float, 'a) t

hypot x y computes sqrt(x*x + y*y) of all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval min2 : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

min2 x y computes the minimum of all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval max2 : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

max2 x y computes the maximum of all the elements in x and y elementwise, and returns the result in a new ndarray.

Sourceval fmod : (float, 'a) t -> (float, 'a) t -> (float, 'a) t

fmod x y performs float mod division.

Sourceval fmod_scalar : (float, 'a) t -> float -> (float, 'a) t

fmod_scalar x a performs mod division between x and scalar a.

Sourceval scalar_fmod : float -> (float, 'a) t -> (float, 'a) t

scalar_fmod x a performs mod division between scalar a and x.

Sourceval ssqr' : ('a, 'b) t -> 'a -> 'a

ssqr x a computes the sum of squared differences of all the elements in x from constant a. This function only computes the square of each element rather than the conjugate transpose as l2norm_sqr does.

Sourceval ssqr_diff' : ('a, 'b) t -> ('a, 'b) t -> 'a

ssqr_diff x y computes the sum of squared differences of every elements in x and its corresponding element in y.

Sourceval cross_entropy' : (float, 'a) t -> (float, 'a) t -> float

cross_entropy x y calculates the cross entropy between x and y using base e.

Sourceval clip_by_value : ?amin:'a -> ?amax:'a -> ('a, 'b) t -> ('a, 'b) t

clip_by_value ~amin ~amax x clips the elements in x based on amin and amax. The elements smaller than amin will be set to amin, and the elements greater than amax will be set to amax.

Sourceval clip_by_l2norm : 'a -> ('a, 'b) t -> ('a, 'b) t

clip_by_l2norm t x clips the x according to the threshold set by t.

Sourceval fma : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

fma x y z calculates the `fused multiply add`, i.e. (x * y) + z.

Tensor Calculus
Sourceval contract1 : (int * int) array -> ('a, 'b) t -> ('a, 'b) t

contract1 index_pairs x performs indices contraction (a.k.a tensor contraction) on x. index_pairs is an array of contracted indices.

Caveat: Not well tested yet, use with care! Also, consider to use TTGT in future for better performance.

Sourceval contract2 : (int * int) array -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

contract2 index_pairs x y performs indices contraction (a.k.a tensor contraction) on two ndarrays x and y. index_pairs is an array of contracted indices, the first element is the index of x, the second is that of y.

Caveat: Not well tested yet, use with care! Also, consider to use TTGT in future for better performance.

Cast functions
Sourceval cast : ('a, 'b) kind -> ('c, 'd) t -> ('a, 'b) t

cast kind x casts x of type ('c, 'd) t to type ('a, 'b) t specify by the passed in kind parameter. This function is a generalisation of the other casting functions such as cast_s2d, cast_c2z, and etc.

Sourceval cast_s2d : (float, Bigarray.float32_elt) t -> (float, Bigarray.float64_elt) t

cast_s2d x casts x from float32 to float64.

Sourceval cast_d2s : (float, Bigarray.float64_elt) t -> (float, Bigarray.float32_elt) t

cast_d2s x casts x from float64 to float32.

cast_c2z x casts x from complex32 to complex64.

cast_z2c x casts x from complex64 to complex32.

cast_s2c x casts x from float32 to complex32.

cast_d2z x casts x from float64 to complex64.

cast_s2z x casts x from float32 to complex64.

cast_d2c x casts x from float64 to complex32.

Sourceval conv1d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval conv2d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval conv3d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval dilated_conv1d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval dilated_conv2d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval dilated_conv3d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval transpose_conv1d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval transpose_conv2d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval transpose_conv3d : ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval max_pool1d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval max_pool2d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval max_pool3d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval avg_pool1d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval avg_pool2d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval avg_pool3d : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t

TODO

Sourceval max_pool2d_argmax : ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t * (int64, Bigarray.int64_elt) t

TODO

Sourceval upsampling2d : ('a, 'b) t -> int array -> ('a, 'b) t

TODO

Sourceval conv1d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval conv1d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval conv2d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval conv2d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval conv3d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval conv3d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv1d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv1d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv2d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv2d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv3d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval dilated_conv3d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv1d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv1d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv2d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv2d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv3d_backward_input : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval transpose_conv3d_backward_kernel : ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval max_pool1d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval max_pool2d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval max_pool3d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval avg_pool1d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval avg_pool2d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval avg_pool3d_backward : Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Sourceval upsampling2d_backward : ('a, 'b) t -> int array -> ('a, 'b) t -> ('a, 'b) t

TODO

Helper functions

The following functions are helper functions for some other functions in both Ndarray and Ndview modules. In general, you are not supposed to use these functions directly.

Sourceval print_element : ('a, 'b) kind -> 'a -> unit

print_element kind a prints the value of a single element.

Sourceval print_index : int array -> unit

print_index i prints out the index of an element.

Sourceval _check_transpose_axis : int array -> int -> unit

_check_transpose_axis a d checks whether a is a legiti('a, 'b) te transpose index.

Sourceval one_hot : int -> ('a, 'b) t -> ('a, 'b) t

one_hot idx depth creates one-hot vectors according to the indices ndarray and the specified depth. If idx is rank N, then the return is rank N+1. More specifically, if idx is of shape [|a;b;c|], the return is of shape [|a;b;c;depth|].

Sourceval sum_slices : ?axis:int -> ('a, 'b) t -> ('a, 'b) t

sum_slices ~axis:2 x for x of [|2;3;4;5|], it returns an ndarray of shape [|4;5|]. Currently, the operation is done using gemm, it is fast but consumes more memory.

Sourceval slide : ?axis:int -> ?ofs:int -> ?step:int -> window:int -> ('a, 'b) t -> ('a, 'b) t

slide ~axis ~window x generates a new ndarray by sliding a window along specified axis in x. E.g., if x has shape [|a;b;c|] and axis = 1, then [|a; number of windows; window; c|] is the shape of the returned ndarray.

Parameters: * axis is the axis for sliding, the default is -1, i.e. highest dimension. * ofs is the starting position of the sliding window. The default is 0. * step is the step size, the default is 1. * window is the size of the sliding window.

In-place modification
Sourceval create_ : out:('a, 'b) t -> 'a -> unit

TODO

Sourceval uniform_ : ?a:'a -> ?b:'a -> out:('a, 'b) t -> unit

TODO

Sourceval gaussian_ : ?mu:'a -> ?sigma:'a -> out:('a, 'b) t -> unit

TODO

Sourceval poisson_ : mu:float -> out:('a, 'b) t -> unit

TODO

Sourceval sequential_ : ?a:'a -> ?step:'a -> out:('a, 'b) t -> unit

TODO

Sourceval bernoulli_ : ?p:float -> out:('a, 'b) t -> unit

TODO

Sourceval zeros_ : out:('a, 'b) t -> unit

TODO

Sourceval ones_ : out:('a, 'b) t -> unit

TODO

Sourceval one_hot_ : out:('a, 'b) t -> int -> ('a, 'b) t -> unit

TODO

Sourceval sort_ : ('a, 'b) t -> unit

sort_ x performs in-place quicksort of the elelments in x.

Sourceval get_fancy_ : out:('a, 'b) t -> Owl_types.index list -> ('a, 'b) t -> unit

TODO

Sourceval set_fancy_ : out:('a, 'b) t -> Owl_types.index list -> ('a, 'b) t -> ('a, 'b) t -> unit

TODO

Sourceval get_slice_ : out:('a, 'b) t -> int list list -> ('a, 'b) t -> unit

TODO

Sourceval set_slice_ : out:('a, 'b) t -> int list list -> ('a, 'b) t -> ('a, 'b) t -> unit

TODO

Sourceval copy_ : out:('a, 'b) t -> ('a, 'b) t -> unit

copy_ ~out src copies the data from ndarray src to destination out.

Sourceval reshape_ : out:('a, 'b) t -> ('a, 'b) t -> unit

TODO

Sourceval reverse_ : out:('a, 'b) t -> ('a, 'b) t -> unit

TODO

Sourceval transpose_ : out:('a, 'b) t -> ?axis:int array -> ('a, 'b) t -> unit

transpose_ ~out x is similar to transpose x but the output is written to out.

Sourceval repeat_ : out:('a, 'b) t -> ('a, 'b) t -> int array -> unit

repeat_ ~out x reps is similar to repeat x reps but the output is written to out.

Sourceval tile_ : out:('a, 'b) t -> ('a, 'b) t -> int array -> unit

tile_ ~out x reps is similar to tile x reps but the output is written to out.

Sourceval pad_ : out:('a, 'b) t -> ?v:'a -> int list list -> ('a, 'b) t -> unit

pad_ ~out ?v p x is similar to pad ?v p x but the output is written to out.

Sourceval sum_ : out:('a, 'b) t -> axis:int -> ('a, 'b) t -> unit

TODO

Sourceval min_ : out:('a, 'b) t -> axis:int -> ('a, 'b) t -> unit

TODO

Sourceval max_ : out:('a, 'b) t -> axis:int -> ('a, 'b) t -> unit

TODO

Sourceval add_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

add_ x y is similar to add function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval sub_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

sub_ x y is similar to sub function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval mul_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

mul_ x y is similar to mul function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval div_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

div_ x y is similar to div function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval pow_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

pow_ x y is similar to pow function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval atan2_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

atan2_ x y is similar to atan2 function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval hypot_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

hypot_ x y is similar to hypot function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval fmod_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

fmod_ x y is similar to fmod function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval min2_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

min2_ x y is similar to min2 function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval max2_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

max2_ x y is similar to max2 function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval add_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

add_scalar_ x y is similar to add_scalar function but the output is written to x.

Sourceval sub_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

sub_scalar_ x y is similar to sub_scalar function but the output is written to x.

Sourceval mul_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

mul_scalar_ x y is similar to mul_scalar function but the output is written to x.

Sourceval div_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

div_scalar_ x y is similar to div_scalar function but the output is written to x.

Sourceval pow_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

pow_scalar_ x y is similar to pow_scalar function but the output is written to x.

Sourceval atan2_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

atan2_scalar_ x y is similar to atan2_scalar function but the output is written to x.

Sourceval fmod_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

fmod_scalar_ x y is similar to fmod_scalar function but the output is written to x.

Sourceval scalar_add_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_add_ a x is similar to scalar_add function but the output is written to x.

Sourceval scalar_sub_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_sub_ a x is similar to scalar_sub function but the output is written to x.

Sourceval scalar_mul_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_mul_ a x is similar to scalar_mul function but the output is written to x.

Sourceval scalar_div_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_div_ a x is similar to scalar_div function but the output is written to x.

Sourceval scalar_pow_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_pow_ a x is similar to scalar_pow function but the output is written to x.

Sourceval scalar_atan2_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_atan2_ a x is similar to scalar_atan2 function but the output is written to x.

Sourceval scalar_fmod_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

scalar_fmod_ a x is similar to scalar_fmod function but the output is written to x.

Sourceval clip_by_value_ : ?out:('a, 'b) t -> ?amin:'a -> ?amax:'a -> ('a, 'b) t -> unit

TODO

Sourceval clip_by_l2norm_ : ?out:('a, 'b) t -> 'a -> ('a, 'b) t -> unit

TODO

Sourceval fma_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

fma_ ~out x y z is similar to fma x y z function but the output is written to out.

Sourceval dot_ : ?transa:bool -> ?transb:bool -> ?alpha:'a -> ?beta:'a -> c:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

Refer to :doc:`owl_dense_matrix_generic`

Sourceval conj_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

conj_ x is similar to conj but output is written to x

Sourceval abs_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

abs_ x is similar to abs but output is written to x

Sourceval neg_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

neg_ x is similar to neg but output is written to x

Sourceval reci_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

reci_ x is similar to reci but output is written to x

Sourceval signum_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

signum_ x is similar to signum but output is written to x

Sourceval sqr_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

sqr_ x is similar to sqr but output is written to x

Sourceval sqrt_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

sqrt_ x is similar to sqrt but output is written to x

Sourceval cbrt_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

cbrt_ x is similar to cbrt but output is written to x

Sourceval exp_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

exp_ x is similar to exp_ but output is written to x

Sourceval exp2_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

exp2_ x is similar to exp2 but output is written to x

Sourceval exp10_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

exp2_ x is similar to exp2 but output is written to x

Sourceval expm1_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

expm1_ x is similar to expm1 but output is written to x

Sourceval log_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

log_ x is similar to log but output is written to x

Sourceval log2_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

log2_ x is similar to log2 but output is written to x

Sourceval log10_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

log10_ x is similar to log10 but output is written to x

Sourceval log1p_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

log1p_ x is similar to log1p but output is written to x

Sourceval sin_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

sin_ x is similar to sin but output is written to x

Sourceval cos_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

cos_ x is similar to cos but output is written to x

Sourceval tan_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

tan_ x is similar to tan but output is written to x

Sourceval asin_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

asin_ x is similar to asin but output is written to x

Sourceval acos_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

acos_ x is similar to acos but output is written to x

Sourceval atan_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

atan_ x is similar to atan but output is written to x

Sourceval sinh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

sinh_ x is similar to sinh but output is written to x

Sourceval cosh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

cosh_ x is similar to cosh but output is written to x

Sourceval tanh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

tanh_ x is similar to tanh but output is written to x

Sourceval asinh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

asinh_ x is similar to asinh but output is written to x

Sourceval acosh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

acosh_ x is similar to acosh but output is written to x

Sourceval atanh_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

atanh_ x is similar to atanh but output is written to x

Sourceval floor_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

floor_ x is similar to floor but output is written to x

Sourceval ceil_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

ceil_ x is similar to ceil but output is written to x

Sourceval round_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

round_ x is similar to round but output is written to x

Sourceval trunc_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

trunc_ x is similar to trunc but output is written to x

Sourceval fix_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

fix_ x is similar to fix but output is written to x

Sourceval erf_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

erf_ x is similar to erf but output is written to x

Sourceval erfc_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

erfc_ x is similar to erfc but output is written to x

Sourceval relu_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

relu_ x is similar to relu but output is written to x

Sourceval softplus_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

softplus_ x is similar to softplus but output is written to x

Sourceval softsign_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

softsign_ x is similar to softsign but output is written to x

Sourceval sigmoid_ : ?out:('a, 'b) t -> ('a, 'b) t -> unit

sigmoid_ x is similar to sigmoid but output is written to x

Sourceval softmax_ : ?out:('a, 'b) t -> ?axis:int -> ('a, 'b) t -> unit

softmax_ x is similar to softmax but output is written to x

Sourceval cumsum_ : ?out:('a, 'b) t -> ?axis:int -> ('a, 'b) t -> unit

cumsum_ x is similar to cumsum but output is written to x

Sourceval cumprod_ : ?out:('a, 'b) t -> ?axis:int -> ('a, 'b) t -> unit

cumprod_ x is similar to cumprod but output is written to x

Sourceval cummin_ : ?out:('a, 'b) t -> ?axis:int -> ('a, 'b) t -> unit

cummin_ x is similar to cummin but output is written to x

Sourceval cummax_ : ?out:('a, 'b) t -> ?axis:int -> ('a, 'b) t -> unit

cummax_ x is similar to cummax but output is written to x

Sourceval dropout_ : ?out:('a, 'b) t -> ?rate:float -> ('a, 'b) t -> unit

dropout_ x is similar to dropout but output is written to x

Sourceval elt_equal_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_equal_ x y is similar to elt_equal function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_not_equal_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_not_equal_ x y is similar to elt_not_equal function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_less_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_less_ x y is similar to elt_less function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_greater_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_greater_ x y is similar to elt_greater function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_less_equal_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_less_equal_ x y is similar to elt_less_equal function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_greater_equal_ : ?out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> unit

elt_greater_equal_ x y is similar to elt_greater_equal function but the output is written to out. You need to make sure out is big enough to hold the output result.

Sourceval elt_equal_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_equal_scalar_ x a is similar to elt_equal_scalar function but the output is written to x.

Sourceval elt_not_equal_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_not_equal_scalar_ x a is similar to elt_not_equal_scalar function but the output is written to x.

Sourceval elt_less_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_less_scalar_ x a is similar to elt_less_scalar function but the output is written to x.

Sourceval elt_greater_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_greater_scalar_ x a is similar to elt_greater_scalar function but the output is written to x.

Sourceval elt_less_equal_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_less_equal_scalar_ x a is similar to elt_less_equal_scalar function but the output is written to x.

Sourceval elt_greater_equal_scalar_ : ?out:('a, 'b) t -> ('a, 'b) t -> 'a -> unit

elt_greater_equal_scalar_ x a is similar to elt_greater_equal_scalar function but the output is written to x.

Sourceval conv1d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval conv2d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval conv3d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval dilated_conv1d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval dilated_conv2d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval dilated_conv3d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval transpose_conv1d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval transpose_conv2d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval transpose_conv3d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval max_pool1d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval max_pool2d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval max_pool3d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval avg_pool1d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval avg_pool2d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval avg_pool3d_ : out:('a, 'b) t -> ?padding:Owl_types.padding -> ('a, 'b) t -> int array -> int array -> unit

TODO

Sourceval upsampling2d_ : out:('a, 'b) t -> ('a, 'b) t -> int array -> unit

TODO

Sourceval conv1d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval conv1d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval conv2d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval conv2d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval conv3d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval conv3d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv1d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv1d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv2d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv2d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv3d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval dilated_conv3d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv1d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv1d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv2d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv2d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv3d_backward_input_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval transpose_conv3d_backward_kernel_ : out:('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval max_pool1d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval max_pool2d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval max_pool3d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval avg_pool1d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval avg_pool2d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval avg_pool3d_backward_ : out:('a, 'b) t -> Owl_types.padding -> ('a, 'b) t -> int array -> int array -> ('a, 'b) t -> unit

TODO

Sourceval upsampling2d_backward_ : out:('a, 'b) t -> ('a, 'b) t -> int array -> ('a, 'b) t -> unit

TODO

Sourceval fused_adagrad_ : ?out:('a, 'b) t -> rate:'a -> eps:'a -> ('a, 'b) t -> unit

TODO

Matrix functions
Sourcetype area = {
  1. a : int;
  2. b : int;
  3. c : int;
  4. d : int;
}

Refer to :doc:`owl_dense_matrix_generic`

Sourceval area : int -> int -> int -> int -> area

Refer to :doc:`owl_dense_matrix_generic`

Sourceval copy_area_to : ('a, 'b) t -> area -> ('a, 'b) t -> area -> unit

Refer to :doc:`owl_dense_matrix_generic`

Sourceval row_num : ('a, 'b) t -> int

Refer to :doc:`owl_dense_matrix_generic`

Sourceval col_num : ('a, 'b) t -> int

Refer to :doc:`owl_dense_matrix_generic`

Sourceval row : ('a, 'b) t -> int -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval col : ('a, 'b) t -> int -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval rows : ('a, 'b) t -> int array -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval cols : ('a, 'b) t -> int array -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval copy_row_to : ('a, 'b) t -> ('a, 'b) t -> int -> unit

Refer to :doc:`owl_dense_matrix_generic`

Sourceval copy_col_to : ('a, 'b) t -> ('a, 'b) t -> int -> unit

Refer to :doc:`owl_dense_matrix_generic`

Sourceval dot : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval diag : ?k:int -> ('a, 'b) t -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval trace : ('a, 'b) t -> 'a

Refer to :doc:`owl_dense_matrix_generic`

Sourceval to_rows : ('a, 'b) t -> ('a, 'b) t array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval of_rows : ('a, 'b) t array -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval to_cols : ('a, 'b) t -> ('a, 'b) t array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval of_cols : ('a, 'b) t array -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval to_arrays : ('a, 'b) t -> 'a array array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval of_arrays : ('a, 'b) kind -> 'a array array -> ('a, 'b) t

Refer to :doc:`owl_dense_matrix_generic`

Sourceval draw_rows : ?replacement:bool -> ('a, 'b) t -> int -> ('a, 'b) t * int array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval draw_cols : ?replacement:bool -> ('a, 'b) t -> int -> ('a, 'b) t * int array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval draw_rows2 : ?replacement:bool -> ('a, 'b) t -> ('a, 'b) t -> int -> ('a, 'b) t * ('a, 'b) t * int array

Refer to :doc:`owl_dense_matrix_generic`

Sourceval draw_cols2 : ?replacement:bool -> ('a, 'b) t -> ('a, 'b) t -> int -> ('a, 'b) t * ('a, 'b) t * int array

Refer to :doc:`owl_dense_matrix_generic`

Helper functions
Sourceval float_to_elt : 'a -> 'a

Identity function to deal with the type conversion required by other functors.

Sourceval elt_to_float : 'a -> 'a

Identity function to deal with the type conversion required by other functors.