Make.Operatormodule Symbol : Owl_computation_symbol_sig.Sigval noop : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val empty : int array -> Symbol.Shape.Type.arrTODO
val zeros : int array -> Symbol.Shape.Type.arrTODO
val ones : int array -> Symbol.Shape.Type.arrTODO
val create : int array -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.arrTODO
val sequential :
?a:Symbol.Shape.Type.elt ->
?step:Symbol.Shape.Type.elt ->
int array ->
Symbol.Shape.Type.arrTODO
val uniform :
?a:Symbol.Shape.Type.elt ->
?b:Symbol.Shape.Type.elt ->
int array ->
Symbol.Shape.Type.arrTODO
val gaussian :
?mu:Symbol.Shape.Type.elt ->
?sigma:Symbol.Shape.Type.elt ->
int array ->
Symbol.Shape.Type.arrTODO
val bernoulli : ?p:Symbol.Shape.Type.elt -> int array -> Symbol.Shape.Type.arrTODO
val init : int array -> (int -> Symbol.Shape.Type.elt) -> Symbol.Shape.Type.arrTODO
val init_nd :
int array ->
(int array -> Symbol.Shape.Type.elt) ->
Symbol.Shape.Type.arrTODO
val shape : Symbol.Shape.Type.arr -> int arrayTODO
val numel : Symbol.Shape.Type.arr -> intTODO
val get : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.eltTODO
val set : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.elt -> unitTODO
val get_slice : int list list -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val set_slice :
int list list ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
unitTODO
val get_fancy :
Owl_types.index list ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val set_fancy :
Owl_types.index list ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
unitTODO
val copy : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val reset : Symbol.Shape.Type.arr -> unitTODO
val reshape : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrTODO
val reverse : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val tile : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrTODO
val repeat : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrTODO
val pad :
?v:Symbol.Shape.Type.elt ->
int list list ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val expand : ?hi:bool -> Symbol.Shape.Type.arr -> int -> Symbol.Shape.Type.arrTODO
val squeeze : ?axis:int array -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val concatenate :
?axis:int ->
Symbol.Shape.Type.arr array ->
Symbol.Shape.Type.arrTODO
val stack : ?axis:int -> Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrTODO
val concat :
axis:int ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val draw :
?axis:int ->
Symbol.Shape.Type.arr ->
int ->
Symbol.Shape.Type.arr * 'a arrayTODO
val map :
(Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val fold :
?axis:int ->
(Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scan :
?axis:int ->
(Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt -> Symbol.Shape.Type.elt) ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val one_hot : int -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val delay :
(Symbol.Shape.Type.Device.A.arr -> Symbol.Shape.Type.Device.A.arr) ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrdelay f x returns f x. It allows to use a function that is not tracked by the computation graph and delay its evaluation. The output must have the same shape as the input.
val delay_array :
int array ->
(Symbol.Shape.Type.Device.A.arr array -> Symbol.Shape.Type.Device.A.arr) ->
Symbol.Shape.Type.arr array ->
Symbol.Shape.Type.arrdelay_array out_shape f x works in the same way as delay but is applied on an array of ndarrays. Needs the shape of the output as an argument.
val lazy_print :
?max_row:int ->
?max_col:int ->
?header:bool ->
?fmt:(Symbol.Shape.Type.Device.A.elt -> string) ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrlazy_print x prints the output of x when it is evaluated. Is implemented as an identity node. For information about the optional parameters, refer to the print function of the Ndarray module.
val abs : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val neg : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val floor : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val ceil : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val round : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val sqr : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val sqrt : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val log : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val log2 : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val log10 : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val exp : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val sin : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val cos : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val tan : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val sinh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val cosh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val tanh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val asin : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val acos : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val atan : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val asinh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val acosh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val atanh : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val min :
?axis:int ->
?keep_dims:bool ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val max :
?axis:int ->
?keep_dims:bool ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val sum :
?axis:int ->
?keep_dims:bool ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val sum_reduce :
?axis:int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val signum : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val sigmoid : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val relu : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val dawsn : Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val min' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val max' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val sum' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val log_sum_exp' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val log_sum_exp :
?axis:int ->
?keep_dims:bool ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val l1norm' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val l2norm' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val l2norm_sqr' : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val clip_by_value :
?amin:Symbol.Shape.Type.elt ->
?amax:Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val clip_by_l2norm :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val pow :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scalar_pow :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val pow_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val atan2 :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scalar_atan2 :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val atan2_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val hypot :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val min2 :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val max2 :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val add :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val sub :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val mul :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val div :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val add_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val sub_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val mul_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val div_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val scalar_add :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scalar_sub :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scalar_mul :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val scalar_div :
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val fma :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_equal :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_not_equal :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_less :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_greater :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_less_equal :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_greater_equal :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val elt_equal_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val elt_not_equal_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val elt_less_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val elt_greater_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val elt_less_equal_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val elt_greater_equal_scalar :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.elt ->
Symbol.Shape.Type.arrTODO
val conv1d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val conv2d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val conv3d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val transpose_conv1d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val transpose_conv2d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val transpose_conv3d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arrTODO
val dilated_conv1d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val dilated_conv2d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val dilated_conv3d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val max_pool1d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val max_pool2d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val max_pool3d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val avg_pool1d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val avg_pool2d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val avg_pool3d :
?padding:Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arrTODO
val upsampling2d : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrTODO
val conv1d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val conv1d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val conv2d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val conv2d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val conv3d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val conv3d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv1d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv1d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv2d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv2d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv3d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose_conv3d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv1d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv1d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv2d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv2d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv3d_backward_input :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val dilated_conv3d_backward_kernel :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val max_pool1d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val max_pool2d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val max_pool3d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val avg_pool1d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val avg_pool2d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val avg_pool3d_backward :
Owl_types.padding ->
Symbol.Shape.Type.arr ->
int array ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val upsampling2d_backward :
Symbol.Shape.Type.arr ->
int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val row_num : Symbol.Shape.Type.arr -> intTODO
val col_num : Symbol.Shape.Type.arr -> intTODO
val row : Symbol.Shape.Type.arr -> 'a -> Symbol.Shape.Type.arrTODO
val rows : Symbol.Shape.Type.arr -> int array -> Symbol.Shape.Type.arrTODO
val copy_row_to : Symbol.Shape.Type.arr -> 'a -> 'b -> unitTODO
val copy_col_to : Symbol.Shape.Type.arr -> 'a -> 'b -> unitTODO
val diag : ?k:int -> Symbol.Shape.Type.arr -> Symbol.Shape.Type.arrTODO
val trace : Symbol.Shape.Type.arr -> Symbol.Shape.Type.eltTODO
val dot :
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val transpose :
?axis:int array ->
Symbol.Shape.Type.arr ->
Symbol.Shape.Type.arrTODO
val to_rows : Symbol.Shape.Type.arr -> 'a arrayTODO
val of_rows : Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrTODO
val to_cols : Symbol.Shape.Type.arr -> 'a arrayTODO
val of_cols : Symbol.Shape.Type.arr array -> Symbol.Shape.Type.arrTODO
val of_array :
Symbol.Shape.Type.elt array ->
int array ->
Symbol.Shape.Type.arrTODO
val of_arrays : Symbol.Shape.Type.elt array array -> Symbol.Shape.Type.arrTODO
val to_arrays : Symbol.Shape.Type.arr -> Symbol.Shape.Type.elt array arrayTODO
module Scalar : sig ... endmodule Mat : sig ... endmodule Linalg : sig ... end